如果 Boolean(1.2) 实际上为真,为什么 1.2 == true returns false?

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

温习一下 =====,我实在无法用解释说服自己。

我用一个浮点数做一个 == 和一个 Boolean true。它returnsfalse。但是当我明确地将浮点数转换为布尔值时,它 returns 为真。 == 不应该首先将 1.2 转换为布尔值,然后将其与另一侧的 true 进行比较吗?

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

另一方面,"integer" 将按我的预期运行。

> 1 == true
true

正如你上面所说的 1.2 不会首先转换为布尔值。

根据abstract equality comparison algorithm,将执行以下步骤

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