在弄清楚它是什麼之前,不知道它到底可以幹嘛用。
弄清楚之後才恍然大悟,原來它真的蠻好用!
基礎用法
1 | var a, b, rest; |
解構賦值可以用在 array 和 object 上。也可以混著使用,後面會說到。
透過解構賦值可以簡單的宣告變數,不用再一個一個的去宣告。
陣列的解構賦值
- 可以賦予預設值。
- 可以對調變數值。
忽略部分的值
- 使用
,和空白做分隔,就可以忽略不需要的值。
1 | function f() { |
Rest 的使用
- 使用
...可以擷取剩下的值。 - 要特別注意,它只能使用在最後一個變數。
1 | var [a, ...b] = [1, 2, 3]; |
如果 rest 不是最後一個變數,會跳錯誤。1
2var [a, ...b,] = [1, 2, 3];
// SyntaxError: rest element may not have a trailing comma
物件的解購賦值
- 基本上和陣列的解構賦值是相同的。
- 可以重新命名變數名稱,也可以給予變數預設值。
需要注意,object destructuring 若是在事先宣告的情況下,需要有
( )將它包覆起來。1
2var a, b;
({a, b} = {a: 1, b: 2});物件的 rest 用法
1
2
3
4let {a, b, ...rest} = {a: 10, b: 20, c: 30, d: 40}
a; // 10
b; // 20
rest; // { c: 30, d: 40 }
巢狀的物件和陣列解構 (Nested object and array destructuring)
With Object
1 | function makeItem(){ |
1 | const res = makeItem() |
With Array & Object
- 陣列和物件的解構賦值可以混合使用。
1 | function makeArryItems(){ |
1 | const res = makeArryItems(); |
在迭代使用解構賦值 (For of iteration and destructuring)
1 | var people = [ |
在 function parameter 中使用
1 | function userId({id}) { |