es6中的...用起来和方便,但用的多了发现了疑惑。他到底代表什么意思。

先说结论:在赋值运算语句里

 1、当在 等号 右边出现时,是展开运算符,就是字面意思把东西给展开这个很好理解,可以用在arrayobject上都行。

let a = [1,2,3];
let b = [0, ...a, 4]; // [0,1,2,3,4]

let obj = { a: 1, b: 2 };
let obj2 = { ...obj, c: 3 }; // { a:1, b:2, c:3 }
let obj3 = { ...obj, a: 3 }; // { a:3, b:2 }

 2、当在 等号 左边出现时,是剩余操作符。从某种意义上说,剩余语法与展开语法是相反的。

  表示将多个元素收集起来并“凝聚”为单个元素。一般只针对array的解构,或者在函数里作为形参使用

let ary = [1,2,3,4];
let [n,...ary2] = ary;
// n = 1
// ary2 = [2,3,4]


// 也可以
let a = [1,2,3];
let [b, ...[c,d,e]] = a;
b; // 1
c; // 2
d; // 3
e; // undefined

function test(a, ...rest){
  console.log(a); // 1
  console.log(rest); // [2,3]
}

test(1,2,3)
02-11 03:48