我一直认为 if 语句本质上比较它的参数类似于 == true
。然而,以下 Firebug 中的实验证实了我最担心的事情——在编写 Javascript 15 年后,我仍然不知道 WTF 是怎么回事:
>>> " " == true
false
>>> if(" ") console.log("wtf")
wtf
我的世界观在这里一团糟。我可以运行一些实验来了解更多信息,但即使那样我也会因为害怕浏览器的怪癖而失眠。这是在某处的规范中吗?它是一致的跨浏览器吗?我会掌握 JavaScript 吗?
最佳答案
“如果两个操作数不是同一类型,JavaScript 会转换操作数,然后进行严格比较。如果其中一个操作数是数字或 bool 值,则将操作数转换为数字;如果其中一个操作数是字符串,则另一个操作数一个被转换为字符串。”
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators
所以第一个是这样的:
Number(" ")==Number(true)
第二个是这样计算的:
if(Boolean(" ")==true) console.log("wtf")
关于javascript - Javascript If 语句的语义是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1615969/