php有個很方便的用法是定義函數時可以直接給參數設預設值,如:
function simue ($a=1,$b=2){
return $a $b;
}
echo simue(); //輸出3
echo simue(10); //輸出12
echo simue(10,20); //輸出30
但js卻不能這麼定義,如果寫function simue(a= 1,b=2){}會提示缺少物件。
js函數中有個儲存參數的陣列arguments ,所有函數所獲得的參數會被編譯器挨個儲存到這個陣列中。於是我們的js版支援參數預設值的函數可以透過另外一種變通的方法實現,修改上例:
複製程式碼
代碼如下:
function simue (){
var a = arguments[0] ? arguments[0] : 1;
var b = arguments[1] ? arguments[1 ] : 2;
return a b;
}
alert( simue() ); //輸出3 alert( simue(10) ); //輸出12 alert( simue( 10,20) ); //輸出30