arguments类似Array但是并不是Array
而rest就是一个Array
用rest替代atguments
eg:给数组排序
//arguments变量的写法: function sortFunc(){ return Array.prototype.slice.call(arguments).sort(); } //而rest参数的写法: const sortFunc = (...numbers) => number.sort();
eg:function foo(a,b,...rest){ console.log(a); console.log(b); console.log(rest); } foo(1,2,3,4,5) //1,2,Array [3,4,5] foo(1) //1, undefined, Array[]
rest参数只能写在最后,前面用...
标识,从运行结果可知,传入的参数先绑定a
、b
,多余的参数以数组形式交给变量rest
,所以,不再需要arguments
我们就获取了全部参数。
如果传入的参数连正常定义的参数都没填满,也不要紧,rest参数会接收一个空数组(注意不是undefined
)。