在JavaScript中,为什么“0”等于false,但是当通过“if”测试时,它本身并不是false?
2022-08-30 00:23:46
下面显示了 Javascript 中的错误:"0"
>>> "0" == false
true
>>> false == "0"
true
那么为什么下面打印呢?"ha"
>>> if ("0") console.log("ha")
ha
下面显示了 Javascript 中的错误:"0"
>>> "0" == false
true
>>> false == "0"
true
那么为什么下面打印呢?"ha"
>>> if ("0") console.log("ha")
ha
原因是因为当您显式执行此操作时,两边都转换为数字,然后执行比较。"0" == false
当您执行:时,正在测试字符串值。任何非空字符串都是 ,而空字符串是 。if ("0") console.log("ha")
true
false
等于 (==)
如果两个操作数的类型不同,JavaScript 会转换操作数,然后应用严格的比较。如果任一操作数是数字或布尔值,则操作数将尽可能转换为数字;否则,如果任一操作数是字符串,则另一个操作数将转换为字符串(如果可能)。如果两个操作数都是对象,则 JavaScript 会比较当操作数引用内存中的同一对象时,内部引用是相等的。
(来自 Mozilla Developer Network 中的 Comparison Operators)