1. 程式人生 > >es6 解構賦值 的幾個注意點

es6 解構賦值 的幾個注意點

1、結構不成功,變數值等於undefined

let [lzp] = [];
let [lt, lzp] = [1];

以上兩種情況屬於結構不成功, lzp 的值都是 undefined

2、如果等號的右邊不是陣列,則會報錯

// 等號右邊的都不是陣列,所以都會報錯
let [lzp] = 1;
let [lzp] = false;
let [lzp] = NaN;
let [lzp] = undefined;
let [lzp] = null;
let [lzp] = {};

3、結構賦值使用預設值的時候,因為ES6 的內部使用嚴格相等運算子(===),判斷一個位置是否有值。所以,只有當一個數組成員嚴格等於undefined,預設值才會生效。

let [lt= 1] = [undefined];
lt // 1

let [lt = 1] = [null];
lt // null

 4、解構賦值的預設值可以使用其他的變數,但是該變數必須提前被宣告

let [lt = 1, lzp = lt] = [];     // lt=1; lzp =1
let [lt = 1, lzp  = lt] = [2];    // lt=2; lzp =2
let [lt = 1, lzp  = lt] = [1, 2]; // lt=1; lzp =2
let [lt = lzp, lzp  = 1] = [];     // ReferenceError: lzp  is not defined
// 物件的解構賦值也是一樣的,預設值生效的條件是,物件的屬性值嚴格等於undefined
var {lt = 22} = {lt: undefined};
lt // 3

var {lt = 22} = {lt: null};
lt // null

//上面程式碼中,屬性lt等於null,因為null與undefined不嚴格相等,所以是個有效的賦值,導致預設值22不會生效。