为什么在JavaScript中,“if ('0' == false)” 等于 false,而在 “if(0)” 语句中却为 true?
让我们逐一看看这些条件:
if(‘0’ == false)
它遵循以下规则:
If Type(y) is Boolean, return the result of the comparison x == ToNumber(y)
== 运算符会进行类型强制转换。这意味着会请求显式类型转换以匹配两个操作数的类型。左侧的 '0' 会转换为数字 0。比较这两个数字,由于 0 等于 0,结果为 true。在这种情况下,这不起作用,因为它没有暗示 '0' 字符串的真假性质,因为它在比较之前被强制转换了。
if(0)
这检查字符串是否为空,而不是它是否为零。始终记住,非空字符串为 true。这里没有使用类型强制转换,因为字符串可以根据其自身属性评估为真或假。
广告