引子
在 ES2015 之前,有把函数的 arguments
转变为某种可以当作数组来使用的方法,现在可以摆脱这些方法了。
这是继 JavaScript 新旧替换二:赋值和取值的第三篇。
ES5 方式
主要是使用了 apply()
方法,该方法用途是在特定的作用域中调用函数,实际上等于设置函数体内 this
对象的值。该接受两个参数:一个是在其中运行函数的作用域,另一个是参数数组。其中,第二个参数可以是 Array
的实例,也可以是 arguments
对象。
function foo() {
var args = Array.prototype.slice.apply(arguments);
console.info(args); // [1,2,3,4,5]
console.info(args instanceof Array); // true
}
foo(1,2,3,4,5);
ES2015+ 方式
在 ES2015 中引入了一个新的运算符 ...
,称为 spread 或 rest(展开或收集)运算符。不同情况下,会有不同的特性。
function foo(...args) {
console.info(args); // [1,2,3,4,5]
console.info(...args); // 1 2 3 4 5
}
foo(1,2,3,4,5);
这里运算符 ...
使用的特性有:
foo(...args)
中使用了收集的特性,把一系列值收集到一起成为一个数组。console.