关于 空字符串''、0 和 false 做判断的问题
最近写项目的时候遇到了一个bug,判断当某个状态等于0的时候一种状态,等于空串''的时候是另一种状态,后来发现无论等于哪一个都执行第一个,然后就发现了下图的判断问题
image.png
经查阅资料之后发现,在JavaScript做比较的时候,有这样的三条规则
• 如果比较的两者中有bool,会把 bool 先转换为对应的 number,即 0 和 1
• 如果比较的双方中有一方为number一方为string,会把string转换为数字
• 把string直接转换为boolean的时候,空字符串‘’转换为 false,除此外的一切字符串转换为 true
所以:
0 == false 输出true
在做判断的时候,两者中有boolean,会把boolean先转化为number,false为0,true是1。也就是等价于判断 0 == 0'' == false 输出为true
js中空字符串与0相等,也就意味着空字符串等等于false'0' == false 正确输出为true
string和number作比较的时候,string会先转化成number。此时字符串0转化为了数字0,即: 0 == 0 (重点)Boolean('0')
正确输出为true;string转化成Boolean类型,空字符串为false,别的字符串全是true。
网友评论