rest 参数
rest 参数叫做不定(剩余)参数,写法就是 ... 返回数组结构。这个 ... 必须要加到最后一项。只能在结构中的最后。
var [a,b,c] = [1,2,3,4,5,6,7];
console.log(a);
console.log(b);
console.log(c);
var [aa,bb,...cc] = [1,2,3,4,5,6,7];
console.log(aa);
console.log(bb);
console.log(cc);
这个例子中 rest 参数不能放在 aa 或者 bb 的前面,只能放 cc 的前面。数据的返回格式是数组。
在函数中也可以有 rest 参数。
function show(a,b,...c){
console.log(c)
};
show(1,2,3,4,5,6);
在函数的位置中也是包括在最后的。
函数的 length 是不包括 rest 参数的。这句话的意思是 ... 是不包括在函数的 length 中的。
function show(a,b,...c){
console.log(show.length)
}; //长度返回 2 不是 3 这说明 ...c 没有包括进去
扩展运算符 ...
扩展运算符 ... 是 rest 参数的逆运算。
var arr = [1,2,3,4,5,6,7];
console.log(arr);
console.log(...arr);
把数组再次转化为字符串的形式
同样的函数也是可以的,
var arr = [1,2,3];
function show(a,b,c){
console.log(a);
console.log(b);
console.log(c);
};
show(...arr);
show(arr);
扩展运算符可以转的数据结构是有遍历器接口的都可以转。在ES6中,有三类数据结构原生具备Iterator接口:数组、某些类似数组的对象、Set和Map结构,对象(Object)之所以没有默认部署Iterator接口,是因为对象的哪个属性先遍历,哪个属性后遍历是不确定的,需要开发者手动指定。这里推荐一篇文章 Iterator接口 。