es6中 ?? 与 || 区别
自我记录
??
和||
都是逻辑运算符,但它们的作用不同。
??
是空值合并运算符,它用于检查左侧的表达式是否为null
或undefined
。如果是null
或undefined
,则返回右侧的表达式;如果不是,则返回左侧的表达式
ts
let foo = null;
let bar = foo ?? 'default'; // bar 的值为 'default'
let baz;
let qux = baz ?? 'default'; // qux 的值为 'default'
||
是逻辑或运算符,它用于检查左侧的表达式是否为假。如果左侧的表达式为假,则返回右侧的表达式;如果左侧的表达式为真,则返回左侧的表达式。在JavaScript中,只有null
、undefined
、''
、0
、NaN
被视为假值,其他值都被视为真值。
ts
let foo = 'hello';
let bar = foo || 'default'; // bar 的值为 'hello'
let baz;
let qux = baz || 'default'; // qux 的值为 'default'
因此,
??
和||
的区别在于它们的逻辑行为和使用场景。??
用于空值合并
,而||
用于逻辑或
。