- 匿名函数:
-
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
)。