如果两个操作数的类型不同,则JavaScript会转换这些操作数,然后进行严格比较。如果操作数是数字或布尔值,则在可能的情况下将操作数转换为数字;否则,操作数将转换为数字。否则,如果一个操作数是一个字符串,则另一个操作数将转换为字符串(如果可能)。
考虑到这一点,我将评估"true" == true
如下:
isNaN(Number("true")) // true
)String(true) === "true" // true
)我最终得到了字符串"true"
和"true"
,其结果应为true
,但是JavaScript显示为false。
我错过了什么?
因为"true"
转换为NaN
,而true
则转换为1
。所以他们不同。
就像您报告的那样,两者都被转换为数字,因为至少true
可以被转换(请参阅Erik Reppen的评论),然后进行比较。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句