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