ES6基礎之解構賦值

2021-10-05 02:52:47 字數 1243 閱讀 2739

let[x,y='b']=['a'];    //x='a',y='b'

let[x,y='b']=['a',undefined]; //x='a',y='b'

//如果乙個陣列成員是null,預設值就不會生效,因為null不嚴格等於undefined。

let [x=1]=[null];

x //null

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

function f()

let[x=f()]=[1];

//x能取到值,所以函式f根本不會執行。等價的**如下

let x;

if([1][0]===undefined)else

let =;

foo //"aaa"

bar //"bbb"

let=;

baz undefined

//foo是匹配的模式,baz才是變數。真正被賦值的是變數baz

let=;

baz //"aaa"

foo //error:foo is not defined

let obj=

}};let]}=obj;

x //"hello"

y //『world"

//以上**這種的p是模式,不是變數,英雌不會被賦值。如果p也要作為變數賦值,可以寫成以下形式

let obj=

}};let]}=obj;

x //"hello"

y //『world"

//loc:},loc和start都是模式,只有line是變數,所以對應的是node中line值為1。

const node = }};

let , loc: } } = node;

line // 1

loc // object

start // object

//下面的例子中錯誤的原因是被認為是乙個塊級作用域,導致解構失敗,我們在使用解構要盡量避免這種大括號直接在行首的情況

// 錯誤的寫法

let x;

= ;// 正確的寫法

let x;

( = );

ES6之 解構賦值

es6允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構賦值 destructuring 也可以簡稱 解構。下面用 進一步解釋一下什麼叫解構賦值。1.關於給變數賦值,傳統的變數賦值是這樣的 var arr 1,2,3 把陣列的值分別賦給下面的變數 var a arr 0 var b...

ES6之解構賦值

1.es6 允許按照一定模式,從陣列和物件中提取值,對變數進行賦值,這被稱為解構 let a,b,c 1,2 3 2.如果等號的右邊不是陣列 或者嚴格地說,不是可遍歷的結構,參見 iterator 一章 那麼將會報錯。如下例 let foo 1 let foo false let foo nan l...

ES6之解構賦值

es6允許按照一定模式從陣列和物件中提取值,對變數進行賦值 稱為解構賦值 const aaa 張三 李四 王二 麻子 let zhang,li,wang,ma aaa console.log zhang 張三 console.log li 李四 console.log wang 王二 console...