我知道 ==
和 ===
之间的区别,但是我一直相信 if (condition)
condition
应该使用严格相等 (===
) 而不是类型强制相等 (==
) 针对 true
进行评估。
看一个例子:
if (1) {
console.log("1");
}
if (1 == true) {
console.log("2");
}
if (1 === true) {
console.log("3");
}
它返回:
::1
::2
我知道 1 不严格等于 true
,因为类型不同,但是当我根据 W3C 执行 if (condition)
时,它应该是严格相等的运行的测试 (===
) 不是 ==
的类型强制相等性。
那么为什么它记录 1?
最佳答案
if
语句使用condition == true
。它在 ECMAScript 语言规范中给出,此处:http://www.ecma-international.org/ecma-262/5.1/#sec-12.5
请注意第 2 步中 ToBoolean()
的用法。这会将给定的参数转换为 bool 值,这意味着是的,对于 if< 的条件确实会发生类型强制转换
声明。
关于javascript - 在 JS 中 if (condition) 表示 == true 或 === true,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17883717/