为什么if(“ string”)评估“ string”为真,但if(“ string” == tru

给出以下代码:


if ("string") {

    console.log('true!');

}

//logs "true" to the console

if ("string"==true) {

    console.log('true!');

}

//doesn't log anything

为什么会这样?我以为"string"布尔值会被强制转换为数字。因此true变得1和"string"变NaN。第二条if语句很有意义,但是我不明白为什么第一条语句会导致内部循环被求值。这里发生了什么?


慕婉清6462132
浏览 585回答 3
3回答

qq_笑_17

非空字符串是真实的,但不一定等同于true。==是“软”相等运算符。它使用强制类型将两个等效对象进行相等比较。以下所有条件都是正确的:42 == "42"0 == false0 == ""[] == ""{} == "[object Object]""1" == trueAribtrary字符串不等于任何原始值。然而当您编写时if (something),if将执行if something是“ truthy”。除以下内容外,所有值都是真实的:false0NaN""nullundefined
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript