es6(二) 解構賦值

2022-06-05 04:36:10 字數 2196 閱讀 9812

es中允許按照一定格式從陣列,物件值提取值對變數進行賦值,這就是解構(destructuring)

1 let [a,b,c]=[1,10,100]

2 console.log(a,b,c)//

1 10 1003//

等式兩邊"模式"進行匹配,從而進行賦值

4 let [i,[[[j]],k]]=[1,[[[2]],3]]//

這種看看就好,知道這樣也可以執行就行

5 console.log(i,j,k)//

1 2 3

67 let [,,x]=[1,2,3]

8 console.log(x)//

3

解構不成功,相應的變數為undefined

1 let [i1,i2]=

2 console.log(i1,i2)//

undefined undefined

3 let [i3,i4]=[10]

4 console.log(i3,i4)//

10 undefined

部分解構成功

1 let [i5,i6]=[1,2,3]

2 console.log(i5,i6)//

1 2

等式右邊不是可遍歷的結構,那麼將報錯

1 let [i7,i8]=1 //

1 is not iterable

2 let [i9] =true

//true is not iterable

解構賦值允許指定預設值

1 let [i10,i11='hi']=[100]

2 console.log(i10,i11)//

100 'hi'

注意這種情況

1

//let [i111=i12,i12=10]=//報錯,i111=i12 此時i12還未申明2//

而:3 let [i13=i14,i14]=[1,2]

4 console.log(i13,i14)

物件的解構賦值

1 let =

2console.log(foo,bar)3//

但其實上面解構賦值是下面的縮寫

4 let =

5console.log(foo1,bar1)6//

如果繼續變換

7 let =8//

console.log(foo2,bar2)//報錯

9 console.log(name,age)//

正確寫法

10//

即foo2是模式,name才是賦值的變數

執行結果:

解構賦值的幾大應用:

1.交換變數

1 let a10=10,b100=100;

2 [a10,b100]=[b100,a10]

3 console.log(a10,b100)//

100 10

2.函式返回中取出多個值

1

function

test10()

4function

test100()9}

10 let [j1,j2,j3]=test10()

11 console.log(j1,j2,j3)//

1 2 3

12 let =test100()

13 console.log(namet,aget) //

3.提取json資料

1

function

getjson()7}

100 "hello blue" 110

參考阮一峰ecmascript入門

ES6 二 解構賦值

從陣列和物件中提取值,對變數進行賦值,這被稱為解構 1 從函式返回多個值 let a,b 1,2 a,b 2,1 a 2 b 1 2 接收從函式返回的多個值 函式只能返回乙個值,想返回多個需要返回乙個物件或陣列,用解構賦值取值非常方便 function exam let a,b,c exam a 1...

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...