1. 程式人生 > >記錄一下ES6擴充套件運算子(三點運算子)...的用法

記錄一下ES6擴充套件運算子(三點運算子)...的用法

該記錄源於segmentfaul網友的評論,特意感謝!

 ...運算子用於運算元組,有兩種層面

1. 第一個叫做 展開運算子(spread operator),作用是和字面意思一樣,就是把東西展開。可以用在array和object上都行。
比如:

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. 第二個,第三個叫做 剩餘操作符(rest operator),是解構的一種,意思就是把剩餘的東西放到一個array裡面賦值給它。一般只針對array的解構,其他的沒見過。。。
比如:
let a = [1,2,3];
let [b, ...c] = a;
b; // 1
c; // [2,3]

// 也可以
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)
還有類似的
let array = [1, 2, 3, 4, 5];
const { x, y, ...z } = array;
// 其中z=[3, 4, 5],注意如果由於array的length不足以完成析構,則會導致z為[]
物件:
let obj = { name: 'zhangsan', age: 30, city: 'shenzhen' };
const {name, ...others} = obj;
console.log(name); // 'zhangsan'
console.log(others); // {age: 30, city: 'shenzhen'}

將繼續補充,繼續學習