关于JavaScript中0、空字符串、是false的问题

2021-07-15  本文已影响0人  她与星河皆遗憾

关于 空字符串''、0 和 false 做判断的问题

最近写项目的时候遇到了一个bug,判断当某个状态等于0的时候一种状态,等于空串''的时候是另一种状态,后来发现无论等于哪一个都执行第一个,然后就发现了下图的判断问题


image.png

经查阅资料之后发现,在JavaScript做比较的时候,有这样的三条规则

• 如果比较的两者中有bool,会把 bool 先转换为对应的 number,即 0 和 1
• 如果比较的双方中有一方为number一方为string,会把string转换为数字
• 把string直接转换为boolean的时候,空字符串‘’转换为 false,除此外的一切字符串转换为 true

所以:

  1. 0 == false 输出true 在做判断的时候,两者中有boolean,会把boolean先转化为number,false为0,true是1。也就是等价于判断 0 == 0
  2. '' == false 输出为true js中空字符串与0相等,也就意味着空字符串等等于false
  3. '0' == false 正确输出为true string和number作比较的时候,string会先转化成number。此时字符串0转化为了数字0,即: 0 == 0 (重点)
  4. Boolean('0') 正确输出为true;string转化成Boolean类型,空字符串为false,别的字符串全是true。
上一篇下一篇

猜你喜欢

热点阅读