对象:
...用于从对象中取出属性值,拷贝到当前的对象中。 //对象中的扩展运算符 var o={a:1,b:2}; var o2={...o}; //{a:1,b:2} === Object.assign({},o) var o3={...o,c:3};// 合并 {a:1,b:2,c:3} var o3={...o,b:3}; //属性重名会覆盖 {a:1,b:3} var o4={...o,...{c:3,d:4}} //{a:1,b:2,c:3,d:4}
数组:
//数组中的扩展运算符 参数序列 序列化JSON.stringify(o) var arr=[1,2,3,4]; var arr2=[...arr]; //[1,2,3,4] //[3,10] 1.计算数组的和 function fun(a,b){ return a+b; } var n=[3,10]; fun(...n); //13 //2.数组的合并 var arr3=[1,2,3]; var arr4=[4,5]; // arr3.push(arr4); //[1, 2, 3, [4,5]] //concat(); var a=arr3.concat(arr4); // console.log(a); //[1, 2, 3, 4, 5] //es6 arr3.push(...arr4); console.log(arr3); //(5) [1, 2, 3, 4, 5] //另一种简洁 , 数据是追加 不会去重和替换等处理 var a2=[...arr3,...arr4]; //(5) [1, 2, 3, 4, 5] var a3=[1,...arr3,2,...arr4,...[6,7]];//方式很灵活
扩展运算符和解构结合
let [a,...b]=[1,2,3,4,5]; a; //a b; //[2, 3, 4, 5] let [a,...b]=[]; a;//undefined b;//[] let [a,...b]=[1]; a;//1 b;//[]
*注意点:扩展运算符用于数组解构,只能放在参数的最后一位,其他位置会报错,如下是两个坑
let [...a,b]=[1,2,3,4];//error let [a,...b,c]=[1,2,3,4];//error