在es6中,拓展运算符就是…(三个点),它可以把数组转化为由逗号隔开的参数序列,用法真是多种多样。
console.log(...[1,2,3,4,5]); //1,2,3,4,5
console.log(1,...[2,3,4],5); //1,2,3,4,5
可以直接用它来代替arguments对象:
function add(...values){
let sum = 0;
for(var val of values) {
sum += val;
}
return sum;
}
add(2,5,3); //10
这种参数在es6中称作rest参数,代表多余的参数,在解构赋值中可以合理的运用:
arr = [1,2,3,4,5];
[a,...rest] = arr;
a;// 1
rest; //[2,3,4,5]
它也可以替代数组的apply方法:
var args = [1,2,3];
f.apply(null,args);
可以直接被替代为:
f(...args)
它还可以替代数组的合并方法:
arr1 = [1,2,3];
arr2 = [4,5,6];
arr3 = [...arr1,...arr2]; //[1,2,3,4,5,6]
可以将字符串转化为数组:
[...'hello']; //["h","e","l","l","o"]
甚至可以识别Unicode字符:
[...'x\uD83D\uDE80y'].length // 3
实现Iterator接口的对象
var nodeList = document.querySelectorAll('div');
var array = [...nodeList];