// 以前的寫法.為變數賦值,只能直接指定值
let a =1;
let b =2;
let c =3;
// es6的允許寫法
let[a, b, c]=[
1,2,
3];//從陣列中提取值,按照對應位置,對變數賦值
console.
log(a, b, c)
;//1,2,3
// 本質上,這種寫法屬於「模式匹配」,只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值.
// 當左右兩邊不完全匹配時,出現的兩種情況。
// 1:
let[a, b]=[
1]; console.
log(a, b)
;//1,undefined
// 2:
let[a, b, c]=[
1,2,
3,4]
; console.
log(a, b, c)
;//1,2,3
// 解構賦值允許指定預設值
let[a, b =3]
=[1, undefined]
; console.
log(a, b)
;//a = 1;b = 3而不是undefined;
// 需要注意的是:es6 內部使用嚴格相等運算子(===),判斷乙個位置是否有值。所以,只有當乙個陣列成員嚴格等於undefined,預設值才會生效。
let[a, b =3]
=[1,
null];
// console.log(a, b); //a = 1;b = null而不是3 null不嚴格等於undefined;
// 預設值可以引用解構賦值的其他變數, 但該變數必須已經宣告
let[x =
1, y = x]=[
];// x=1; y=1。匹配項為undefined,使用預設值
let[x =
1, y = x]=[
2];// x=2; y=2。x匹配2,預設值1無效。匹配項的第二個值不存在,y使用預設值,為x,而x=2,故,y = 2。
let[x =
1, y = x]=[
1,2]
;// x=1; y=2。匹配項完全匹配,不嚴格等於undefined,所以不使用預設值。x = 1,y = 2。
let[x = y, y =1]
=;// referenceerror: y is not defined。y還未宣告,不能使用。
<
/script>
解構賦值 陣列的解構賦值
什麼是解構賦值?es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 我的理解是 允許宣告一種模式 陣列 物件等 裡面包含乙個或多個變數,再分別對這些變數遍歷 按照對應位置 賦值。以前,為變數賦值,只能直接指定值。let a 1 let b 2 通...
陣列的解構賦值
es6允許按照一定的模式,從陣列和物件中提取值,對變數進行賦值,這被稱之為解構 destructuring 以前為變數賦值,只能直接指定值 var a 1 var b 2 var c 3 es6允許寫成這樣 var a,b,c 1,2,3 本質上,這種寫法屬於 模式匹配 只要等號兩邊的模式相同,左邊...
陣列的解構賦值
es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。es5宣告變數 let a 1 let b 2 let c 3 es6解構賦值 let a,b,c 1,2,3 本質上,這種寫法屬於 模式匹配 只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值。下面是一些使用巢狀陣列進...