返回博客

JavaScript 中感叹号的陷阱与解决方法

JavaScript 中的感叹号 (!) 通常用于逻辑非运算符。本文介绍了一个常见的 JavaScript bug:使用感叹号对字符串进行逻辑非运算时,结果可能与预期不符,并提供了解决方案。

Mt.r
|

遇到了了一个有趣的 bug

js 中的感叹号本来是取反的,但是我碰到了个有意思的 bug,是这样的。

正常情况下是这样的

!0 // true
!1 // false
!-1 // false

但是有时候后端会给你返回一个字符串,就变成这样了

!'0' // false
!'1' // false

这个 bug 导致抽奖结果一直为 ture,我 debug 排查的时候发现的,赶紧 mark 下来

预防措施

!Number('0') // true
!Number('1') // false