为什么“ [] == true”和“![] == true”都为假?

jdn*_*jdn 6 javascript

我有两个这样的说法。他们为什么都评价为false

console.log([] == true)
console.log(![] == true)
Run Code Online (Sandbox Code Playgroud)

如果[] == true不是false应该![] == true导致的true

nic*_*oum 7

这是胁迫的方式。

强制的第一步是将任何非原始类型转换为原始类型,然后使用一组规则将左侧,右侧或两侧转换为相同类型。您可以在此处找到这些规则。

在您的情况下[] == true,将通过以下4个步骤:

  1. [] == true
  2. [] == 1
  3. "" == 1
  4. 0 == 1

而基于操作者的优先级!![] == true这样的表达式转换为首先执行false == true这显然false

您可以尝试Felix Kling现场演示,以更好地了解相同性运算符的工作原理。