[英]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.