簡體   English   中英

Object 解構:在一行中分配 null 個值

[英]Object destructuring: Assign null values in one line

假設我有一個這樣的 object

foo = {
    a: 1,
    b: 2,
    c: 3
};

我會這樣破壞它

const {a, b, c} = foo;

但是,如果鍵abc不存在怎么辦?

foo = null;

那這行不通

const {a, b, c} = foo;

我將不得不做類似的事情

let a, b, c;

if(foo) {
    a = foo.a;
    b = foo.b;
    c = foo.c;
};

有沒有辦法在一行中做到這一點? 就像是

 const {a, b, c} = foo ? foo : null; // this is not working

null 不是 object。(評估“_ref2.a”)

當 foo 不是 object 時,您將不得不給它一個 object 以便解構發生。 因此,使用“或”將其設置為空的 object。 現在,如果定義了foo它將使用foo ,如果未定義它將使用默認值 object。

 const foo = undefined; const { a, b, c } = foo || {}; console.log(a, b, c);

如果您想要默認值,請在 object 中設置它們。

 const foo = undefined; const { a, b, c } = foo || {a: 'a', b: 'b', c: 'c' }; console.log(a, b, c);

如果 object 沒有提供所有默認值,您可以在解構中設置值。

 const foo = { a: 1}; const { a = "a", b = "b", c = "c" } = foo || {}; console.log(a, b, c);

解構默認參數怎么樣? 如果 foo 可以是未定義的 set = foo || {} = foo || {}在解構中避免異常

 let foo = {}; const {a = null, b = null, c = null} = foo; console.log('a:', a); console.log('b:', b); console.log('c:', c);

它會像您預期的那樣工作,變量a bc將使用undefined的值創建。 當還嘗試訪問某個 object 上不存在的屬性時,這是回退。

 const foo = {}; console.log(foo.a); // undefined const {a, b, c} = foo; console.log(a); // undefined console.log(b); // undefined console.log(d); // Uncaught ReferenceError: d is not defined

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM