今天出现一个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,他还骗我
空值合并运算符(??)和严格相等(===)运算优先级
于 2023-12-19 17:32:53 首次发布
文章讲述了在JavaScript中遇到的一个关于逻辑运算符优先级的bug,一个看似简单的条件判断由于运算符的优先级问题导致了意外的结果,让作者起初误解。AI的解释澄清了这一问题,提醒开发者注意运算符的使用顺序。
350

被折叠的 条评论
为什么被折叠?



