解構時一種打破資料結構,將其拆分為更小部分的過程。解構在實際開發中經常會應用到物件和陣列中。關於解構的基本用法,請參考:es6–變數的宣告及解構賦值
const node = ;
let = node;
// 對已經宣告的變數賦值
const node = ;
let a, b;
( = node)
const obj = };
let } = obj;
console.log(a) // a is not defined
console.log(b) // 1
const node = ;
let = node;
// 可以使用預設值
let = node;
注意:如果值為null,不會執行預設值,只有為undefined才會走預設值。
const node = ;
let = node;
console.log(c, d); // null 4
const node = ;
let = node;
console.log(a, b); // 1 2
所有冒號前的識別符號都代表在物件中的檢索位置,其右側為被賦值的變數名。
示例:將乙個物件的部分屬性賦值給另外乙個物件
let obj1 =
let obj2 =
( = obj1) // invalid destructuring assignment target
let obj =
let = obj
console.log(a, obj2) // 1
特別說明:es6中展開運算子只針對iterable才起作用,預設有陣列、set、map和字串。並不包含物件!es6規範中也並未將展開運算子支援物件,但是目前的主流瀏覽器chrome和firefox均已實現該特性。這意味著如果想在低版本瀏覽器中使用需要特別的babel外掛程式進行轉換!object-rest-spread通過在陣列中的位置進行選取,且可以將其儲存在任意變數中,未「顯式宣告」的元素都會被直接被忽略。
let colors = ['red', 'blue', 'green'];
let [, , thirdcolor] = colors;
console.log(thirdcolor)
// 對已宣告的變數進行賦值
let colors = ['red', 'blue', 'green'];
let thirdcolor;
[, , thirdcolor] = colors;
注意:不需要小括號包裹表示式,這一點與物件解構的約定不同
let colors = ['red', 'blue', 'green'];
let [firstcolor, ...othercolor] = colors;
console.log(othercolor) // ["blue", "green"]
...
語法將陣列中的其餘元素賦值給乙個待定的變數。
示例:轉殖陣列
let colors = ['red', 'blue', 'green'];
// es5方式
colors.concat()
// es6方式
[...colors]
注意:在被解構的陣列中,不定元素必須為最後乙個條目!
function
test
(a, )
test(1, ) // 1 2 3
test(4) // uncaught typeerror: cannot destructure property `b` of 'undefined' or 'null'.
注意:解構引數,呼叫函式不提供被解構的引數會導致程式丟擲錯誤。let = undefined;
處理方式,讓上述引數可選!
function
test
(a, = {})
test(1, ) // 1 2 3
test(4) // 4 undefined undefined
深入理解ES6之《解構》
如果使用var let const解析宣告變數,則必須提供初始化程式 也就是等號右側的值 以下語句有語法錯誤 var let const解構賦值表示式 也就是右側的表示式 如果為null或undefined會導致程式丟擲錯誤,因為任何嘗試讀取null或undefined的屬性的行為都會觸發執行時錯誤...
深入理解es6的promise
一 promise入門 1.promise物件是什麼 函式的另一種原生實現,比之前 函式的寫法機構清晰,功能強大,2.以前 這麼寫 function a fn else 1000 呼叫a function m 3.用promise 寫 function a else 1000 呼叫a then fu...
es6解構賦值理解
最優 結構賦值的規則是,只要等號右邊的值不是物件或者陣列,就先將其轉為物件,再匹配更詳細規則。由於undefined和null無法轉換為物件,所以進行匹配就回報錯。注意事項 變數宣告 函式引數 賦值語句模式等不要帶圓括號,es6識別不出來是要做結構還是做表示式。1 陣列 左右都是陣列 可遍歷 1.1...