JavaScript 變數的解構賦值 筆記

2021-09-16 19:23:50 字數 2338 閱讀 3225

1.1.陣列形式的解構賦值

let

[foo,

[[bar]

, baz]]=

[1,[

[2],

3]];

// foo = 1、bar = 2、baz = 3

let[

,, third]=[

"foo"

,"bar"

,"baz"];

// third = "baz"

只要某種資料結構具有 iterator 介面,都可以採用陣列形式的解構賦值

2.1.指定預設值。

let

[x, y =

'b']=[

'a']

;// x='a', y='b'

let[x, y =

'b']=[

null

, undefined]

;// x=null, y='b'

es6 內部使用嚴格相等運算子(===)判斷乙個位置是否有值。所以,只有當乙個陣列成員嚴格等於undefined,預設值才會生效。

3.1.如果預設值是乙個表示式,那麼這個表示式是惰性求值的,即只有在用到的時候,才會求值。

functionf(

)let

[x =f(

)]=[

1];

上面**中,因為x能取到值,所以函式f根本不會執行。

2.1.物件的解構賦值

物件的解構與陣列有乙個重要的不同。陣列的元素是按次序排列的,變數的取值由它的位置決定;而物件的屬性沒有次序,變數必須與屬性同名,才能取到正確的值

let=;

>>b // "aaa"

>>f // error: f is not defined

f是匹配的"模式",b才是變數。真正被賦值的是變數,而不是"模式"。物件的解構賦值的內部機制,是先找到同名屬性,然後再賦給對應的變數。真正被賦值的是後者,而不是前者。

let

, loc:}}

=}}>>loc //

>>start //

>>line // 1

"loc,"代表:「loc:loc」

2.2.設定預設值

注釋:物件的解構也可以指定預設值,預設值生效的條件是,物件的屬性值嚴格等於undefined。如果解構失敗,變數的值等於undefined。,

var=;

>>x // 3

3.1.函式的引數也可以使用解構賦值
function

add(

[x, y =

8, z]

)add([

1,2,

3]);

// 6

add([1

,,1]

);// 10

函式add的引數表面上是乙個陣列,但在傳入引數的那一刻,陣列引數就被解構成變數x和y。對於函式內部的**來說,它們能感受到的引數就是x和y。

上述引數【「y = 8」】為設定函式引數預設值

*3.2.引數指定預設值

function

move(=

)move()

;// [3, 8]

move()

;// [3, undefined]

move()

;// [undefined, undefined]

move()

;// [0, 0]

注意與3.1示例區分,上述**為函式move的引數指定預設值,而不是為變數x和y指定預設值。undefined就會觸發函式引數的預設值。

在呼叫該函式時,用入參來替換【引數括號中的"=「號的後半部分,即示例的:後半部分為」"】。

4.1.利用物件的解構賦值可以快速賦值

let

= math;

// 上面**將math物件的對數、正弦、余弦三個方法,賦值到對應的變數上。

4.2.由於陣列本質是特殊的物件,因此可以對陣列進行物件屬性的解構。此時,陣列的下標相當於物件的屬性名。

4.3.字串也可以解構賦值,因為字串預設具有 iterator 介面。這是因為此時,字串被轉換成了乙個類似陣列的物件。

4.4.將解構賦值用來提取 json 資料,尤其有用。

let jsondata =

;let

= jsondata;

console.

log(id, status, number)

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

博文不長,旨在精煉,僅個人複習理解使用…

Javascript 解構賦值

本文是ecmascript 6 入門學習筆記 es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 等號的右邊不是陣列必須為可遍歷的結構 具備 iterator 介面 解構賦值為陣列中提取值,按照對應位置,對變數賦值。let x,y 1,2,3 x...

變數的解構賦值

從陣列和物件中提取值,對變數進行賦值,這被稱為解構 本質上,這種寫法屬於 模式匹配 只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值 例子 let a,b,c 1,2,3 let foo,bar baz 1,2 3 foo 1 bar 2 baz 3 let third foo bar baz ...

變數的解構賦值

什麼是解構 es6允許按照一定的模式,從陣列或者物件中提取值,然後賦值給相應變數,此為解構。解構分為完全解構和不完全解構,前者要求一一對應,後者可以是等號左邊只匹配等號右邊的一部分。解構不成功會返回undefined。let foo alert foo undefined重點 不是只有陣列才可以解構...