es6入門 變數的解構賦值

2021-08-21 22:04:20 字數 2612 閱讀 9507

從陣列和物件中提取值,對變數進行賦值;陣列是位置對應,物件是屬性對應。可使用var、let、const進行宣告賦值。

傳統的賦值語句:

var str = 「hello」;

var str1 = 「word」;

var who = 「you」;

1.陣列的解構賦值    —位置對應

傳統的賦值語句可更改為:

let [str,str1,who] = [「hello」,」word」,」you」];

巢狀解構:

let [str,[[str1],who]] = [「hello」,[[「word」],」you」]];

使用擴充套件運算子 「「:

let [str,…str1] = [「hello」,」word」,」you」];

//str = 「hello」;

//str1 = [「word」,」you」];

如果出現位置對應不上,也就是解構不成功。變數值就就為undefined。

let [str,str1,…who] = [「hello」];

//str = 「hello」;

//str1= undefined;

//who = ;

如果右邊不是陣列(不可遍歷,也就不會有位置對應),都會報錯:

let [str] = 123;

let [str] = false;

let [str] = nan;

let [str] = undefined;

let [str] = null;

let [str] = {};

那麼,如果某種資料結構可遍歷,則可作結構賦值,比如set資料結構:

let [str,str1,who] = new set([「hello」,」word」,」you」]);

指定預設值,預設值只有在解構不成功時生效,嚴格等於(===undefined):

let [str = 「hello」] = ;

//str = 「hello」;

let [str = 「hello」,str1 = 「word」] = [,undefined];

//str = 「hello」;

//str1 = 「word」;

預設值可以是乙個表示式,函式返回值,這個表示式是惰性的(只有在用到的時候才會求值),如果解構成功,那就不會求值:

function a()

var [b =a()] = ;

// b = 12

function a()

var [b =a()] = [13];

// b = 13

預設值可以引用其他變數(已宣告)。

2.物件的解構賦值    —屬性對應

傳統物件賦值:

var a = 

a.b = "hello";

a.c = "word";

給物件變數重新賦值:

var  = ;

//同等於 ==

var = ;

//b = "hello"

//c = "word"

巢狀解構,需模式匹配,p是模式,不會被賦值:

var obj =   ]}

var ]} = obj;

//x = "hello",

//a = "word"

預設值,同陣列解構預設值,物件的屬性值嚴格等於undefined。

在巢狀解構中,如果子物件所在的父物件不存在,則報錯:

var } = ;

//沒有匹配的模式foo,在去屬性a 就會報錯。

如果給已宣告的變數解構賦值,注意寫法。

var foo ;

= ;//報錯,解釋執行為**塊,語法錯誤。

( = );

3.其他可進行解構賦值的資料型別,。

字串、數值、布林值

可將字串、數值、布林值轉換為物件。字串為類似陣列的物件,它可以使用陣列的一些方法,有length屬性,可這個屬性解構賦值。

let  = 'hello';

//len = 5;

4.解構賦值的用途

5.圓括號問題,

上面已用到圓括號解決變數物件解構賦值的問題。

不能使用圓括號的情況;

- 變數宣告時不可以用圓括號。

- 函式引數不能帶圓括號

- 不能將整個模式或巢狀模式放在圓括號中

可以使用圓括號的情況:

- 賦值語句的非模式部分可以使用。(模式是不可以賦值的)

ES6入門 變數的解構賦值

es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 destructuring 以前,為變數賦值,只能直接指定值。let a 1 let b 2 let c 3 es6 允許寫成下面這樣。let a,b,c 1,2,3 只要等號兩邊的模式相同,左邊的變數就會被賦予對應的值。...

es6變數解構賦值

es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構。解構賦值在實際開發中可以大量減少我們的 量,並且讓我們的程式結構更清晰。陣列的解構賦值 let a,b 1 2 console.log a 1 console.log b 2 上面的 表示,可以從陣列中提取值,按照位置的物件...

ES6變數解構賦值

es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 es6之前我們申明多個變數需要按照下面的方法 let l a 1 let b 2 let c 3 let d 4 或者 let a 1,b 2,c 3,d 4 現在我們可以更加簡便 let a,b,c,d 1,2,3,4 ...