如果 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
温习一下 ==
和 ===
,我实在无法用解释说服自己。
我用一个浮点数做一个 ==
和一个 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