为了账号安全,请及时绑定邮箱和手机立即绑定

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

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

在JavaScript中,为什么“0”等于false,但是当被‘if’测试时,它本身并不是假的?如下所示"0"在Javascript中是假的:>>> "0" == falsetrue>>> false == "0"true那么,为什么下面的打印"ha"?>>> if ("0") console.log("ha")ha
查看完整描述

3 回答

?
繁星coding

TA贡献1797条经验 获得超4个赞

原因是因为当你明确地"0" == false,双方都被转换成数字,并且然后进行比较。

当你这样做时:if ("0") console.log("ha"),正在测试字符串值。任何非空字符串都是true,而空字符串是false.

相等(=)

如果这两个操作数是不是同一类型的,JavaScript转换操作数,然后应用严格的比较。如果任一操作数是数字或布尔值,如果可能,将操作数转换为数字;如果任一操作数为一根绳子,如果可能,另一个操作数将转换为字符串。如果两个操作数都是对象。,然后JavaScript比较当操作数引用内存中的同一个对象时相等的内部引用。

(来自比较算子在Mozilla开发人员网络中)


查看完整回答
反对 回复 2019-07-11
?
一只萌萌小番薯

TA贡献1795条经验 获得超7个赞

是PHP,其中的字符串"0"是错误的(在布尔上下文中使用错误)。在JavaScript中,所有非空字符串都是真实的。

诀窍是==对于布尔值在布尔上下文中不进行计算,它将转换为数字,如果字符串是通过十进制解析完成的。所以你得到了号码0而不是真布尔true.

这是一个非常糟糕的语言设计,这是我们尽量不使用不幸的原因之一==接线员。使用===相反。


查看完整回答
反对 回复 2019-07-11
  • 3 回答
  • 0 关注
  • 1744 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信