在JavaScript中,为什么“0”等于false,但是当被‘if’测试时,它本身并不是假的?

在JavaScript中,为什么“0”等于false,但是当被‘if’测试时,它本身并不是假的?

如下所示"0"在Javascript中是假的:

>>> "0" == falsetrue>>> false == "0"true

那么,为什么下面的打印"ha"?

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


一只名叫tom的猫
浏览 1611回答 3
3回答

繁星coding

原因是因为当你明确地"0" == false,双方都被转换成数字,并且然后进行比较。当你这样做时:if ("0") console.log("ha"),正在测试字符串值。任何非空字符串都是true,而空字符串是false.相等(=)如果这两个操作数是不是同一类型的,JavaScript转换操作数,然后应用严格的比较。如果任一操作数是数字或布尔值,如果可能,将操作数转换为数字;如果任一操作数为一根绳子,如果可能,另一个操作数将转换为字符串。如果两个操作数都是对象。,然后JavaScript比较当操作数引用内存中的同一个对象时相等的内部引用。(来自比较算子在Mozilla开发人员网络中)

一只萌萌小番薯

是PHP,其中的字符串"0"是错误的(在布尔上下文中使用错误)。在JavaScript中,所有非空字符串都是真实的。诀窍是==对于布尔值在布尔上下文中不进行计算,它将转换为数字,如果字符串是通过十进制解析完成的。所以你得到了号码0而不是真布尔true.这是一个非常糟糕的语言设计,这是我们尽量不使用不幸的原因之一==接线员。使用===相反。
打开App,查看更多内容
随时随地看视频慕课网APP