[英]Object destructuring: Assign null values in one line
假設我有一個這樣的 object
foo = {
a: 1,
b: 2,
c: 3
};
我會這樣破壞它
const {a, b, c} = foo;
但是,如果鍵a
、 b
和c
不存在怎么辦?
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
b
和c
將使用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.