ES6-拓展运算符

在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];