- 匿名函數:
-
var abs = function (x) { if (x >= 0) { return x; } else { return -x; } };
功能上和下面的一樣
function abs(x) {
if (x >= 0) {
return x;
} else {
return -x;
}
}
- arguments關鍵字:只在函數內部起作用,並且永遠指向當前函數的調用者傳入的所有參數
-
利用
arguments
,你可以獲得調用者傳入的所有參數。也就是說,即使函數不定義任何參數,還是可以拿到參數的值:function abs() { if (arguments.length === 0) { return 0; } var x = arguments[0]; return x >= 0 ? x : -x; } abs(); // 0 abs(10); // 10 abs(-9); // 9
- rest參數
- 由於JavaScript函數允許接收任意個參數,於是我們就不得不用
arguments
來獲取所有參數: -
ES6標準引入了rest參數
function foo(a, b, ...rest) { console.log('a = ' + a); console.log('b = ' + b); console.log(rest); } foo(1, 2, 3, 4, 5); // 結果: // a = 1 // b = 2 // Array [ 3, 4, 5 ] foo(1); // 結果: // a = 1 // b = undefined // Array []
rest參數只能寫在最後,前面用...
標識,從運行結果可知,傳入的參數先綁定a
、b
,多餘的參數以數組形式交給變量rest
,所以,不再需要arguments
我們就獲取了全部參數。
如果傳入的參數連正常定義的參數都沒填滿,也不要緊,rest參數會接收一個空數組(注意不是undefined
)。