如果两个操作数的类型不同,则JavaScript会转换操作数,然后进行严格比较。如果操作数是数字或布尔值,则在可能的情况下将操作数转换为数字;否则,操作数将转换为数字。否则,如果一个操作数是一个字符串,则另一个操作数将尽可能转换为字符串。
考虑到这一点,我将评估"true" == true
如下:
- 它们是同一类型吗?没有
- 操作数是数字还是布尔值?是
- 我们可以将它们都转换为数字吗?否(
isNaN(Number("true")) // true
) - 两个操作数都是字符串吗?是
- 我们可以将另一个操作数转换为字符串吗?是(
String(true) === "true" // true
)
我最后得到的字符串"true"
和"true"
应该为true
,但是JavaScript显示为false。
我错过了什么?