let [foo, [[bar], baz]] = [1, [[2], 3]];
foo // 1
bar // 2
baz // 3
本質上,這種寫法屬於「模式匹配」,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值
let [x, y, ...z] = ['a'];
x // "a"
y // undefined
z //
var [foo] = ;
foo // undefined
var [bar, foo] = [1];
bar // 1
foo // undefined
如果解構不成功,變數的值就等於undefined
。
另一種情況是不完全解構,即等號左邊的模式,只匹配一部分的等號右邊的陣列。這種情況下,解構依然可以成功。
let [x, y] = [1, 2, 3];
x // 1
y // 2
let [a, [b], d] = [1, [2, 3], 4];
a // 1
b // 2
d // 4
解構不僅可以用於陣列,還可以用於物件。變數的取值由它的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值。
var = ;
foo // "aaa"
bar // "bbb"
var = ;
foo // "aaa"
bar // "bbb"
var = ;
baz // undefined
物件的解構賦值是下面形式的簡寫
var = ;
也就是說,物件的解構賦值的內部機制,是先找到同名屬性,然後再賦給對應的變數。真正被賦值的是後者,而不是前者。
var = ;
baz // "aaa"
foo // error: foo is not defined
以上摘自 ES6 變數的解構賦值學習筆記
陣列的解析賦值 本質為 模式匹配 如果解構不成功,變數的值就等於undefined var foo var bar,foo 1 foo的值為undefined let x,y,z a x a y undefined z let a,b d 1,2,3 4 上面的例子為不完全解構,但是可以成功。如果等...
es6變數解構賦值
es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。解構賦值在實際開發中可以大量減少我們的 量,並且讓我們的程式結構更清晰。陣列的解構賦值 let a,b 1 2 console.log a 1 console.log b 2 上面的 表示,可以從陣列中提取值,按照位置的物件...
ES6變數解構賦值
es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 es6之前我們申明多個變數需要按照下面的方法 let l a 1 let b 2 let c 3 let d 4 或者 let a 1,b 2,c 3,d 4 現在我們可以更加簡便 let a,b,c,d 1,2,3,4 ...