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'
因此,
??和||的区别在于它们的逻辑行为和使用场景。??用于空值合并,而||用于逻辑或。