const {foo=20} = bar 在 JavaScript 中是什么意思? [重复]

问题描述 投票:0回答:1

我找不到任何可以搜索的内容。根据我有限的测试,看起来像之后

const {foo = 20} = bar
如果

foo
存在,则其值为
bar.foo
,否则其值为
20
,即它相当于:

const foo = bar?.foo ?? 20

我的理解正确吗?

javascript
1个回答
2
投票

不,这并不完全等同。

区别:

对于 ({foo = 20}),如果 bar.foo 未定义,则使用默认值,但如果 bar.foo 为 null,则不使用默认值。

const {foo = 20} = bar

使用(??)时,默认值用于null或undefined。

const foo = bar?.foo ?? 20

let bar = { foo: null };
const { foo = 20 } = bar;
console.log(foo); // null (not 20)

bar = { foo: null };
const fooVal = bar?.foo ?? 20;
console.log(fooVal); // 20

© www.soinside.com 2019 - 2024. All rights reserved.