我想在这里理解一些东西,解释自己的最佳方式是举个例子:
"" == false
// true
"0" == false
// true
false == false
// true
Run Code Online (Sandbox Code Playgroud)
但这里发生了什么?
"" == "0"
// false
Run Code Online (Sandbox Code Playgroud)
如果""评估false并"0"评估false逻辑,则预测它与我写的相同false == false.
我确实意识到我试图在这里比较两个字符串,但语言如何知道"a" == "b"或者之间的区别"" == "0"?在这种情况下如何发生强制?
Fel*_*ing 12
为什么""=="0"在javascript中是假的?
因为操作数是两个具有不同内容的字符串.类型强制只需要的地方,如果操作数的数据类型是不同的.
相关问题:
如果
""求值为false并且"0"计算false逻辑预测它与我写的相同false == false
让我们看看比较实际如何解决:
"" == false 被胁迫 0 == 0
"0" == false 被胁迫 0 == 0
false == false:相同的数据类型,因此直接比较值
如您所见"0",不会"评估" false,它会转换为整数,并对该值进行比较.(""确实评估为false(空字符串)但是当转换为数字时,它是0).
将值转换为布尔值并将值与布尔值进行比较之间存在很大差异.最明显的例子:!!"0"(true)和"0" == false(true).
当您将不同数据类型的值与松散比较(==)进行比较时,它们始终强制为数字(或者可能是字符串,如果您要将对象与字符串进行比较).
有关比较算法的更多信息,请查看规范.