我正在使用 JavaScript,并且遇到了这个错误,原因是“then”句子中输入了“0”和!“0”。当我在控制台中尝试时,我看到:
!"0" == "0" -> true
为什么会发生这种情况?
最佳答案
!"0"
将字符串 "0"
转换为 bool 值,并取反。因此,由于 "0"
为真(唯一的假字符串是空字符串),因此它的否定是 bool 值 false
。需要明确的是:
!"0"
转换为 false
。
由于我们将 bool 值 false
与字符串 "0"
进行比较,因此 javascript 会将这两个值转换为数字。请参阅 this documentation 中的表格看看哪些类型在比较时被转换为什么。您会注意到,对于 bool 值和字符串,两者都会更改为数字,然后进行比较。
总而言之,我们有 !"0"
,其计算结果为 false
。然后我们将其与另一个字符串进行比较:“0”
。因为一个是 bool 值,另一个是字符串,所以它们会转换为数字。 false
的数字转换为 0
,"0"
的数字转换为 0
,两者相等。这样我们就得到了你看到的结果。
关于javascript - 为什么 !"0"== "0"为真?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48387423/