javascript - JavaScript 如何评估 if 语句表达式?

标签 javascript

我一直认为 JavaScript 的 if 语句对它们的论点施展了某种魔法,但我对幕后实际发生的事情有点警惕。

我最近发现了一个JavaScript comparison table并注意到即使 -1 == true 的计算结果为 falseif(-1){...} 也会执行。

那么在 JavaScript 的 if 语句中,表达式会发生什么变化?假设它使用 !!{expression} 将其转换为反 bool 值,然后再次反转它似乎是合理的,但如果是这样的话,JS 是如何决定一个对象的反 bool 表示是否是真实与否?

最佳答案

JavaScript 很不稳定。

是的,-1 == true 结果为 false,但这不是 if 语句的作用。它正在检查语句是否“真实”或转换为真。在 JavaScript 中,这等同于 !!-1确实结果为真(除零以外的所有数字均为真)。

为什么?!?

The spec defines双等于运算符在出现数字和 bool 值时执行以下操作:

If Type(y) is Boolean, return the result of the comparison x == ToNumber(y).

ToNumber会将 bool 值 true 转换为数字 1,因此您正在比较:

-1 == 1

任何人都可以告诉你这显然是错误的。

另一方面,if 语句正在调用 ToBoolean ,它将任何非零、非 NaN 数字视为 true

关于javascript - JavaScript 如何评估 if 语句表达式?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22723067/

相关文章:

javascript - 使用reduce获取js数组中所有对象的键的并集

javascript - 如何将数据从 module.export 函数传递到对象

javascript - 存储在变量中的关联数组中的访问 key

javascript - 有什么方法可以使 javascript 中的嵌套回调代码更具可读性吗?

javascript - 如何使用JQUERY使用Mouseover/TouchStart/Mouseend/touchend创建圆形动画图像?

javascript - 正则表达式,获取 "?"之间的所有数据

javascript - fontloader 和 textgeometry 在 threejs 中不起作用

javascript - 如何使用 Microsoft Graph API 获取用户的照片(个人资料)?

javascript - Javascript 中的正则表达式删除链接

Javascript 正则表达式用特殊字符替换字符串