解構賦值是對賦值運算子的擴充套件。
他是一種針對陣列或者物件進行模式匹配,然後對其中的變數進行賦值。
在**書寫上簡潔且易讀,語義更加清晰明了;也方便了複雜物件中資料字段獲取。
解構模型
在解構中,有下面兩部分參與:
基本
let
[a, b, c]=[
1,2,
3];// a = 1
// b = 2
// c = 3
可巢狀
let
[a,[
[b], c]]=
[1,[
[2],
3]];
// a = 1
// b = 2
// c = 3
可忽略
let
[a,, b]=[
1,2,
3];// a = 1
// b = 3
不完全解構
如果解構的源為空,切沒有解構目標沒有預設值,結果為undefined。
let
[a =
1, b=a]=[
];// a = 1, b = undefined
剩餘運算子
let
[a,...b]=[
1,2,
3];//a = 1
//b = [2, 3]
字串等
在陣列的解構中,解構的目標若為可遍歷物件,皆可進行解構賦值。可遍歷物件即實現 iterator 介面的資料。
let
[a, b, c, d, e]
='hello'
;// a = 'h'
// b = 'e'
// c = 'l'
// d = 'l'
// e = 'o'
解構預設值
let
[a =2]
=[undefined]
;// a = 2
當解構模式有匹配結果,且匹配結果是 undefined 時,會觸發預設值作為返回結果。
let
[a =
3, b = a]=[
];// a = 3, b = 3
let[a =
3, b = a]=[
1];// a = 1, b = 1
let[a =
3, b = a]=[
1,2]
;// a = 1, b = 2
a 與 b 匹配結果為 undefined ,觸發預設值:a = 3; b = a =3
a 正常解構賦值,匹配結果:a = 1,b 匹配結果 undefined ,觸發預設值:b = a =1
a 與 b 正常解構賦值,匹配結果:a = 1,b = 2
基本
const obj =
let= obj;
變數名與屬性名相同,才能取到正確的值。
如果想要自定義變數名,則用:進行修改。
let
= obj;
console.
log(n)
;
陣列本質也是特殊的物件,也可以對陣列進行物件屬性的解構。
const arr =
["諾手"
,"蠍子"
,"劫"
,"ez"
,"女坦"];
let= arr;
console.
log(first)
; console.
log(last)
;
可巢狀可忽略
let obj =]}
;let]}
= obj;
// x = 'hello'
// y = 'world'
let obj =]}
;let]}
= obj;
// x = 'hello'
不完全解構
let obj =]}
;let
, x ]
}= obj;
// x = undefined
// y = 'world'
剩餘運算子
let=;
// a = 10
// b = 20
// rest =
解構預設值
let=;
// a = 3; b = 5;
let=
;// aa = 3; bb = 5;
var obj =
, e:
function()
}const
= obj;r(
);e(
);
function
sum(
...num)
console.
log(sumnum)
}sum(1
,2,3
)//6
sum(1,
2,"3")
//6sum(1
,3,"6和4"
)//10
計算引數之和:
function
sum(
...nums)
)return sum
}
再簡潔一點,計算引數之和:
function
sum(
...a)
小數四捨五入計算總和:
function
sum(
...a)
ES6 解構賦值
陣列的解構賦值 let a,b 12,13 let a,b,c d 13,15,16 let a,b c 78,12 23 let x,y 1,3,5 x 1,y 3 let x,y,z a x a,y undefined z let h,b 1,2,3,4 1,2,3,4 預設值 let x tr...
ES6解構賦值
一 基本用法 解構 destructuring 按照一定的模式,從陣列或者物件中提取值,對變數進行賦值。let par1,par2,par3 1,2 console.log par1,par2,par3 1 2 不完全解構時par3對值為undefined 解構賦值允許指定變數對預設值。let pa...
es6解構賦值
coding changes the world accumulating makes yourself 主要從三個方面講述 陣列式的解構賦值 物件式的解構賦值 函式中的解構賦值 preface 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...