繁体   English   中英

Javascript:非空字符串的“真实”值

[英]Javascript: “truthy” values for non-empty strings

据说 Javascript 中的非空字符串被认为是“真实的”。 它解释了为什么代码:

if ("0") { 
    console.log("OK")
}

打印“确定”。

但是,为什么代码:

true == "0"

返回假?

等于 (==)

如果两个操作数的类型不同,JavaScript 会转换操作数,然后应用严格的比较。 如果操作数是数字或布尔值,则尽可能将操作数转换为数字; else 如果任一操作数是字符串,则另一个操作数在可能的情况下转换为字符串。 如果两个操作数都是对象,那么当操作数引用内存中的同一对象时,JavaScript 会比较相等的内部引用。

(来自 Mozilla 开发者网络中的比较运算符)

因此,在比较true == '0' ,它首先将两者都转换为数字。

Number(true) == Number('0')其计算结果为1 == 0

因此答案是错误的。

正如其他人指出的那样,我相信if ("0")会检查值是否为空/空/未定义,类似于如果我要写if("some text") ,它也会返回 true。 这里0不用作 true 或 false,而是用作字符串。

另一方面, if(true == "0")将返回 false,因为值不匹配。

这是一个片段,显示了在未定义的变量上返回 true 的 if 语句。

 var someVar = "0"; if("") { console.log("this doesn't execute"); } if(someVar) { console.log("this returns true"); }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM