一尘不染

在JavaScript中,为什么“ 0”等于false,但是在通过“ if”进行测试时,其本身不是false?

javascript

下面显示"0"了Javascript中的false:

>>> "0" == false
true

>>> false == "0"
true

那么,为什么要打印以下内容"ha"

>>> if ("0") console.log("ha")
ha

阅读 427

收藏
2020-04-25

共1个答案

一尘不染

原因是因为当您显式这样做时"0" == false,双方都将转换为数字, 然后 执行比较。

当您执行以下操作:时if ("0") console.log("ha"),正在测试字符串值。任何非空字符串为true,而空字符串为false

等于(==)如果两个操作数 的类型不同 ,则JavaScript会转换操作数,然后进行严格比较。如果操作数是 数字或布尔值,则如果可能,将操作数转换为数字;否则,操作数将转换为数字。否则,如果其中一个操作数是 字符串 ,则将另一个操作数转换为字符串(如果可能)。如果两个操作数都是对象,则JavaScript将比较内部引用,当操作数引用内存中的同一对象时,内部引用是相等的。

2020-04-25