ES6 解構賦值

2021-10-12 14:00:14 字數 3745 閱讀 3838

es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構(destructuring)

基本

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

不完全解構

let

[a =

1, b]=[

];// 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'

當解構模式有匹配結果,且匹配結果是 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

基本

let=;

// foo = 'aaa'

// bar = 'bbb'

let=

;//變數名foo,屬性名baz

// foo = 'ddd'

可巢狀

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 =

var=;

x // 3

var=

;x // 1

y // 5

var=

;y // 3

var=

;y // 5

var=

;msg // "something went wrong"

let x =1;

let y =2;

[x, y]

=[y, x]

;

函式只能返回乙個值,如果要返回多個值,只能將它們放在陣列或物件裡返回.

// 返回乙個陣列

function

example()

let[a, b, c]

=example()

;// 返回乙個物件

function

example()

;}let=

example()

;

解構賦值可以方便地將一組引數與變數名對應起來。

// 引數是一組有次序的值

functionf(

[x, y, z])f

([1,

2,3]

);// 引數是一組無次序的值

functionf(

)f()

;

解構賦值對提取 json 物件中的資料,尤其有用

let jsondata =

;let

= jsondata;

console.

log(id, status, number)

;// 42, "ok", [867, 5309]

指定引數的預設值,就避免了在函式體內部再寫var foo = config.foo || 『default foo』;這樣的語句。

jquery.

ajax

=function

(url,

, cache =

true

,complete

=function()

, crossdomain =

false

, global =

true

,// ... more config}=

);

任何部署了 iterator 介面的物件,都可以用for…of迴圈遍歷。map 結構原生支援 iterator 介面,配合變數的解構賦值,獲取鍵名和鍵值就非常方便。

const map =

newmap()

;map.

set(

'first'

,'hello');

map.

set(

'second'

,'world');

for(

let[key, value]

of map)

// first is hello

// second is world

// 獲取鍵名

for(

let[key]

of map)

// 獲取鍵值

for(

let[

,value]

of map)

載入模組時,往往需要指定輸入哪些方法。

const

=require

("source-map"

);

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 現今的變數宣告語法十分的直接 左邊是乙個變數名,右邊可以是乙個陣列 的表示式或乙個物件 的表示式,等等。...