为什么“ true” == true在JavaScript中显示为false?
MDC对==
操作员的描述如下:
如果两个操作数的类型不同,则JavaScript会转换操作数,然后进行严格比较。如果操作数是数字或布尔值,则在可能的情况下将操作数转换为数字;否则,操作数将转换为数字。否则,如果其中一个操作数是字符串,则另一个操作数将尽可能转换为字符串。
考虑到这一点,我将评估"true" == true
如下:
- 它们是同一类型吗?
- 操作数是数字还是布尔值?
- 我们可以将它们都转换为数字吗? (
isNaN(Number("true")) // true
) - 任一操作数都是字符串吗?
- 我们可以将另一个操作数转换为字符串吗? (
String(true) === "true" // true
)
我最终得到了字符串"true"
和"true"
,其结果应为true
,但是JavaScript显示为false。
我错过了什么?
回答:
因为"true"
转换为NaN
,而true
则转换为1
。所以他们不同。
就像您报告的那样,两者都被转换为数字,因为至少true
可以被转换(请参阅Erik Reppen的评论),然后进行比较。
以上是 为什么“ true” == true在JavaScript中显示为false? 的全部内容, 来源链接: utcz.com/qa/399236.html