js如何實現函數重載?
西蘭花偉大炮
2017-04-22 23:43:09
TA貢獻5條經驗 獲得超3個贊
js沒有其他語言比如java函數重載的概念,js的函數名相同只會覆蓋,后定義函數覆蓋先定的函數,但是js可以模擬函數重載。
@星典 的例子,明顯的函數覆蓋,絕不是重載,永遠只會執行最后定定義的f函數.
function?f(length)? {? ????alert("高為:"+length);? }? ? function?f(length,width)? {? ????alert("高為:"+length+",寬為:"+width);? } f()??//高為:undefined,寬為:undefined f(99)?//?高為:99,寬為:undefined f(99,1000)?//?高為:99,寬為:1000
如上函數改為以下才是js模擬的重載
function?f(length,width)?{ ????var?len?=arguments.length; ????if(?len===0?){ ????????alert("請傳入參數"); ????} ????if(?len?===1){ ????????alert("高為:"+length); ????}? ????if(?len?===2){ ????????alert("高為:"+length+",寬為:"+width); ????}? } f()?//?請傳入參數 f(99)?//?高為:99 f(99,1000)?//高為:99,寬為:1000
TA貢獻1064條經驗 獲得超383個贊
function?f(length)? {? ????alert("高為:"+length);? }? function?f(length,width)? {? ????alert("高為:"+length+",寬為:"+width);? }
方法重載不都這樣嗎
舉報