我一直认为if语句基本上比较了它的类似的论点== true
.然而,Firebug中的以下实验证实了我最担心的事情 - 在写了15年的Javascript之后我仍然没有线索WTF正在进行:
>>> " " == true false >>> if(" ") console.log("wtf") wtf
我的世界观在这里一片混乱.我可以运行一些实验来了解更多信息,但即使这样,我也会因为害怕浏览器怪癖而失眠.这是某个规格吗?它是否一致的跨浏览器?我会掌握javascript吗?
"如果两个操作数的类型不同,则JavaScript转换操作数然后应用严格比较.如果操作数是数字或布尔值,操作数将转换为数字;如果任一操作数是字符串,则另一个转换为数字到一个字符串."
https://developer.mozilla.org/en/Core_JavaScript_1.5_Reference/Operators/Comparison_Operators
所以第一个做:
Number(" ")==Number(true)
而第二个评估如下:
if(Boolean(" ")==true) console.log("wtf")