Javascript中的布尔强制'如果'卫士

时间:2017-05-21 20:28:47

标签: javascript boolean coercion

我今天在Javascript中发现了这种行为让我彻底感到惊讶和困惑:

if ("0") {
    console.log('first')
}
if ("0" == true) {
    console.log('second');
}

输出:

first

我原本希望console.log行中的两个或两个都不执行。我一直认为防护的内容被评估,强制转换为布尔值,然后根据此布尔值传递或失败。这将导致上面的两个守卫都是等效的,但观察到的行为表明还有其他事情正在发生。

Javascript如何确定警卫是否通过?

0 个答案:

没有答案