美文网首页
关于JavaScript中0、空字符串、是false的问题

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

作者: 她与星河皆遗憾 | 来源:发表于2021-07-15 14:32 被阅读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。

    相关文章

      网友评论

          本文标题:关于JavaScript中0、空字符串、是false的问题

          本文链接:https://www.haomeiwen.com/subject/eggppltx.html