js中 ??双问号操作符-空值合并运算符 和|| 运算符号的区别——除了 undefined 和 null的其它虚值,?? 不会返回默认值

本文详细介绍了JavaScript和TypeScript中??空值合并运算符与||逻辑或运算符的区别。||运算符在遇到虚值时会返回默认值,而??运算符仅在值为undefined或null时才提供默认值。??解决了||在处理非null/undefined虚值时返回非预期结果的问题。举例说明了两种运算符的用法,并展示了它们在实际代码编译后的形态。文章强调了??在提供默认值时的精确性和短路特性。
摘要由CSDN通过智能技术生成

js中 ??双问号操作符-空值合并运算符 和|| 运算符号的区别——除了 undefined 和 null的其它虚值,?? 不会返回默认值

typescript ?? 双问号
const i = undefined
const k = i ?? 6
console.log(k) // => 6
1、|| 运算符号

基本只有在实际值undefined或为null时才应使用默认值,这是有效的,因为undefinednull都是假(虚值)的:

undefined || 'default'  // 'default'
null || 'default'  //  'default'

//如果实际值是其他的虚值,也会使用默认值
false || 'default'  // 'default'
'' || 'default'  //  'default'
0 || 'default'  //  'default'
2、双问号操作符-解决 || 运算的问题

对于undefinednull??操作符的工作原理与||操作符相同;如果给定变量值为 null 或者 undefined,则使用双问号后的默认值,否则使用该变量值。

undefined ?? 'default'   //'default'
null ?? 'default'  //'default'

//除了 undefined 和 null的其它虚值,?? 不会返回默认值。
false ?? 'default'  // false
'' ?? 'default' // ''
0 ?? 'default'  // 0

?? 主要是用来解决 || 操作符号的一些问题,以下两个表达式是等价的:

a ?? b
a !== undefined && a !== null ? a : b

默认值是这样提供的:

实例

当左侧操作数为 null 或 undefined 时,其返回右侧的操作数,否则返回左侧的操作数。

const foo = null ?? 'default string';

等价于编译后的JavaScript代码:

var _a;
var foo = (_a = null) !== null && _a !== void 0 ? _a : 'default string';

可见,这个例子,foo必定为default string, 因为编译后的JavaScript代码里,已经能看到null被显式地赋给_a了。

空值合并运算符的短路用法:当空值合并运算符的左表达式不为 null 或 undefined 时,不会对右表达式进行求值。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值