给出以下代码:if ("string") { console.log('true!');}//logs "true" to the consoleif ("string"==true) { console.log('true!');}//doesn't log anything为什么会这样?我以为"string"布尔值会被强制转换为数字。因此true变得1和"string"变NaN。第二条if语句很有意义,但是我不明白为什么第一条语句会导致内部循环被求值。这里发生了什么?
3 回答
qq_笑_17
TA贡献1818条经验 获得超7个赞
非空字符串是真实的,但不一定等同于true。
==是“软”相等运算符。
它使用强制类型将两个等效对象进行相等比较。
以下所有条件都是正确的:
42 == "42"
0 == false
0 == ""
[] == ""
{} == "[object Object]"
"1" == true
Aribtrary字符串不等于任何原始值。然而
当您编写时if (something),if将执行if something是“ truthy”。
除以下内容外,所有值都是真实的:
false
0
NaN
""
null
undefined
添加回答
举报
0/150
提交
取消