空值合并运算符(??)和严格相等(===)运算优先级

文章讲述了在JavaScript中遇到的一个关于逻辑运算符优先级的bug,一个看似简单的条件判断由于运算符的优先级问题导致了意外的结果,让作者起初误解。AI的解释澄清了这一问题,提醒开发者注意运算符的使用顺序。

今天出现一个bug,展示一个node的状态,
(item?.node?.total ?? "1") === (item?.node?.healthy ?? "0") ? "无异常": "异常"
简化一下就是一个这样的式子
4 ?? "1" === 3 ?? "0" ? "无异常" : "异常"
惯性觉得是先运算4 ?? “1”,再运算 3 ?? “0”,得出4不严格等于3,输出‘异常’。
实际上是输出无异常,原因是===的优先级比??高,应该先运算"1"===3,不等于输出false,变成4 ?? false ?? "0" ? "无异常" : "异常",结果显而易见是输出无异常:),关键我一开始没看出来,问ai,他还骗我在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值