我找不到任何可以搜索的内容。根据我有限的测试,看起来像之后
const {foo = 20} = bar
如果foo
存在,则其值为bar.foo
,否则其值为20
,即它相当于:
const foo = bar?.foo ?? 20
我的理解正确吗?
不,这并不完全等同。
区别:
对于 ({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