Javascript 如果布尔值(1.2)实际为真,为什么1.2==true返回false?

Javascript 如果布尔值(1.2)实际为真,为什么1.2==true返回false?,javascript,boolean,type-conversion,equals-operator,Javascript,Boolean,Type Conversion,Equals Operator,回想一下=和=,我真的无法用一个解释说服自己 我取一个浮点数,用一个布尔值做一个=。它返回false。但当我明确地将浮点数转换为布尔值时,它返回true。==是否应该首先将1.2转换为布尔值,然后将其与另一侧的true进行比较 > Boolean(1.2) true > 1.2 == true false 另一方面,“整数”的行为与我预期的一样 > 1 == true true 如上所述,不会首先将1.2转换为布尔值 根据,将执行以下步骤 1.2==true 1.2==t

回想一下
=
=
,我真的无法用一个解释说服自己

我取一个浮点数,用一个布尔值做一个
=
。它返回
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

谢谢。左边的数字不应该转换成布尔值,右边的布尔值不应该转换成数字吗?我还没有花时间阅读ECMA标准,很抱歉问您。@Duckenmaster否,当您使用
=
运算符比较值时,基于AEC算法,它的两种类型都将强制为
数字类型。我已经给出了原始算法的步数,看看那些。这会让你牢牢掌握这个概念。好吧,我在看一个视频课程,讲述者对此进行了评论,他解释说数字被转换,而不是布尔值。谢谢你的推荐。@Barmar Troll alert,实际上是这门课:我不认为问问题是不好的,尤其是在有疑问的时候。我只是开了个小玩笑,很抱歉打扰你。你能告诉我它在哪段视频里吗?我不会花两个小时去找它。