【发布时间】:2019-07-10 03:14:53
【问题描述】:
我知道== 运算符执行类型强制。但我无法理解以下行为。
const x = new Boolean(false);
if (x) {
console.log("if(x) is true");
}
if (x == false) {
console.log("if(x == false) is true");
}
令人惊讶的是,上面的 sn-p 打印了两行:
if(x) is true
if(x == false) is true
有人可以解释这种奇怪的行为还是我缺少一些基本的东西?
【问题讨论】:
-
@JohnMontgomery 那么为什么语句评估为真
-
这不是类型强制的事情,这是拳击的事情。这正是你不做
new Boolean()或new Number()或new String()的原因。 -
请参考以下文档来自精通Kyle Simpson的关于Falsy Objects的文档。我实际上建议您免费阅读整本书。
标签: javascript node.js type-coercion