1.使用…复制数组、对象
let arr = [1, 2, 3];
let arrCopy = [...arr];
let obj = { a: 1, b: 2, c: 3 };
let objCopy = { ...obj };
之前使用:Object.assign({}, obj)
2.若 … 出现在函数参数列表的最后,那么它就是 rest 参数,它会把参数列表中剩余的参数收集到一个数组中。
eg:
function sumAll(...args) { // 数组名为 args
let sum = 0;
for (let arg of args) sum += arg;
return sum;
}
3.若 … 出现在函数调用或类似的表达式中,那它就是 spread 语法,它会把一个数组展开为列表。
eg:
let arr = [3, 5, 1];
[...arr]
注.string转array的几种方法:
1.'test'.split('');
2.[...'tset']; //spread 语法
3.Array.from('test');
4.let array = [];
for(let i of 'test'){
array.push(i)
} //for...of --ES6语法,可以遍历Array、Set、Map、String、TypedArray、arguments等可迭代对象,可以使用break、continue
Array.from 适用于类数组对象也适用于可迭代对象。
Spread 语法只适用于可迭代对象。
因此,对于将一些“东西”转换为数组的任务,Array.from 往往更通用。