繁体   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