写法就是... 三个点
两个作用,扩展和剩余
其实就是将数组a展开
function show(...a){ console.log(a); // [1, 2, 3, 4, 5] } show(1,2,3,4,5);arguments对象不是数组,而是一个类似数组的对象。所以为了使用数组的方法,必须使用Array.prototype.slice.call先将其转为数组。rest 参数就不存在这个问题,它就是一个真正的数组,数组特有的方法都可以使用。下面是一个利用 rest 参数改写数组push方法的例子。
function show(){ console.log(arguments); // Arguments(5) [1, 2, 3, 4, 5, callee: ƒ, Symbol(Symbol.iterator): ƒ] } show(1,2,3,4,5); // 如果想把arguments这个类数组变成数组 function show(){ let arr = Array.prototype.slice.call(arguments) console.log(arr); // [1, 2, 3, 4, 5] } show(1,2,3,4,5); // 如果想给这个数组排序 function show(){ let arr = Array.prototype.slice.call(arguments) arr.sort(function(a,b){return a-b}); console.log(arr); } show(1,102,32,14,5); //[1, 5, 14, 32, 102]但是如果用ES6排序
function show(...arr){ arr.sort(function(a,b){return a-b}); console.log(arr); } show(1,102,32,14,5); // [1, 5, 14, 32, 102]我们还可以在传参的时候扩展
// 解构方法 function show([a,b,c]){ console.log(a,b,c); } show([1,9,6]); // 1 9 6 // 扩展运算符,我在实参的时候就让你扩展 function show(a,b,c){ console.log(a,b,c); } show(...[1,9,6]); // 1 9 6这样我们abc拿到的就是1,2,3其他的是不是就没管啊
剩余运算符就是将剩余的参数放到一个数组中
function show(a,b,...c){ console.log(a,b,c); } show(1,2,3,4,5); // 1 2 [3,4,5] // 这个时候发现c是出了a,b对应的那两项外剩余的所有参数组成的数组如果当成剩余运算符来用必须放最后
注意哦!下面的写法会报错
function show(a,...b,c){ console.log(a,b,c); } show(1,2,3,4,5); // 报错如果我们需要复制一份数组,
var arr = [2,3,6,5,8]; var arr2 = [...arr]; // 以前Array身上还有一个from方法,拷贝数组 var arr = [2,3,6,5,8]; var arr2 = Array.from(arr); // 这个方法还可以将字符串变成数组 var str = "abc"; var arr = Array.from(str); console.log(arr); //["a", "b", "c"]…[1,2,3] ==> 1,2,3
重置为数组… 1,2,3 ==> [1,2,3]; 只能在传参的时候用
剩余参数,必须放到最后function(a,b,…c){}