javascript - Javascript If 语句的语义是什么

标签 javascript

我一直认为 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/

相关文章:

javascript - jQuery 验证验证禁用的输入字段

javascript - 如何在选定的 div 上附加类?

javascript - 使用 Javascript 扩展背景

Javascript 和渲染暂停并在 Android 浏览器中滚动时保持暂停状态

javascript - 在 JavaScript 中使用 Pseudo-Element::before

javascript - Mocha 测试不等待发布/订阅

javascript - jquery 变量到 $(jquery 变量),两者有什么区别

javascript - 如何将 IST 时区对象添加到 Moment.js

javascript - 获取两个日期之间的持续时间(Moment JS)

javascript - 将图像置于响应式视口(viewport)的中心,而不会丢失其纵横比