JavaScript 中的空数组是否真实?

Empty array is truthy or not in JavaScript?

我对以下结果有点困惑,有人可以指出幕后发生的事情吗? 为什么 Boolean([]) 会 return 为真? 松散地将空数组与布尔值进行比较 [] == false 会评估为 true?
但严格比较会评估为假??

这是我不明白的部分

非常感谢!

Boolean([])
//true

[] == false
//true

[] === false
//false

最简单的可靠检查方法是使用长度属性。

[].length // 0, falsy

['something'].length // 1. truthy

查看官方spec了解更多信息。

Boolean([]) // => true
  • 这里,[](数组是对象类型)正在转换为布尔值。自从 [] 有参考价值,换算后为真。

.

[] == false // => false
  • 在这里,相等运算符松散地检查值。由于双方都是 不同的类型(对象和布尔值),其中一个是布尔值,所以 它将转换为(0 或 1)并与另一侧进行比较。这将是 相当于 +[] == +false,即 0 == 0,将为 true

Check MDN document for more details

[] === false // => false
  • 在这里,严格相等运算符。将检查 Type 和 value Since 两者是不同的类型,它将是错误的。