從陣列和物件中提取值,對變數進行賦值;陣列是位置對應,物件是屬性對應。可使用var、let、const進行宣告賦值。
傳統的賦值語句:
var str = 「hello」;1.陣列的解構賦值 —位置對應var str1 = 「word」;
var who = 「you」;
傳統的賦值語句可更改為:
let [str,str1,who] = [「hello」,」word」,」you」];巢狀解構:
let [str,[[str1],who]] = [「hello」,[[「word」],」you」]];使用擴充套件運算子 「…「:
let [str,…str1] = [「hello」,」word」,」you」];如果出現位置對應不上,也就是解構不成功。變數值就就為undefined。//str = 「hello」;
//str1 = [「word」,」you」];
let [str,str1,…who] = [「hello」];如果右邊不是陣列(不可遍歷,也就不會有位置對應),都會報錯://str = 「hello」;
//str1= undefined;
//who = ;
let [str] = 123;那麼,如果某種資料結構可遍歷,則可作結構賦值,比如set資料結構:let [str] = false;
let [str] = nan;
let [str] = undefined;
let [str] = null;
let [str] = {};
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 ...