双竖线与双问号表达缺省值的区别
区别
-
??是将值与null或者undefined进行比较,如果值为null或者undefined,则返回缺省值,否则返回原值。 -
||是将值进行布尔判断,如果值为true则返回返回原值,否则返回缺省值
举例
空字符串的例子:
let createUser = () => {
return '';
};
const user = createUser();
// 输出 john
console.log(user || 'john');
// 输出 空字符
console.log(user ?? 'john');
NaN 数字的例子:
let createNumber = () => {
return NaN;
};
const num = createNumber();
// 输出 0
console.log(num || 0);
// 输出 NaN
console.log(num ?? 0);