You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

在JavaScript中,字符串"0"属于假值(falsy)还是真值(truthy)?

JS中字符串'0'的布尔判断陷阱与解决方案

在JS里,字符串'0'的布尔判断很容易让人懵:

  • 用Boolean('0')会返回true,因为所有非空字符串都是真值
  • 但'0' == false居然也返回true,从这里开始就乱了
  • 再看!'0' == false,结果还是true
  • 更离谱的是'0' == !'0',这行代码返回的居然也是true?!

我之前遇到个场景:要把WebSocket流的数据存到MySQL,得把每个字符串字段转成对应的原始布尔类型。一开始用双非运算符!!转换,结果完全不符合预期——!!"1" == true和!!"0" == true都成立,没法区分"0"和"1"对应的布尔值。

最后折腾出两个可行的解决方案,针对输入字符串s:

  • 方案一:!!+s,先通过+把字符串转成数字,再用双非转成布尔值
  • 方案二:s == '1',直接判断字符串是否等于'1'来得到布尔结果

内容的提问来源于stack exchange,提问作者Nowan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.16 19:32:03