为什么 1.2 == true 返回 false 如果布尔值 (1.2) 实际上是真的

Why 1.2 == true returns false if Boolean(1.2) is actually true?

本文关键字:实际上 真的 false true 返回 为什么 如果 布尔值      更新时间:2023-09-26

复习=====,我真的无法用对此的解释来说服自己。

我取一个浮点数,用Boolean true做一个==。它返回false .但是当我显式地将浮点数转换为布尔值时,它返回 true。== 实际上不应该首先将 1.2 转换为布尔值,然后将其与另一边的 true 进行比较吗?

> Boolean(1.2)
true
> 1.2 == true
false

另一方面,"整数"的行为将符合我的预期。

> 1 == true
true

如上所述1.2不会先转换为布尔值。

根据抽象相等比较算法,将执行以下步骤

  • 1.2 == true
  • 1.2 == toNumber(true)(在算法中,步骤7)
  • 1.2 == 1(在算法中,步骤1)
  • false