空数组在JavaScript中是否真实?

空数组在JavaScript中是否真实?,javascript,arrays,boolean,comparison,Javascript,Arrays,Boolean,Comparison,下面的结果让我有点困惑,有人能指出引擎盖下发生了什么吗? 为什么布尔([])将返回true? 并粗略地将空数组与布尔数组进行比较 []==false将计算为true? 但严格的比较会导致错误 这是我不明白的部分 非常感谢 Boolean([]) //true [] == false //true [] === false //false 可靠检查的最简单方法是使用length属性 [].length // 0, falsy ['something'].length // 1. truth

下面的结果让我有点困惑,有人能指出引擎盖下发生了什么吗? 为什么布尔([])将返回true? 并粗略地将空数组与布尔数组进行比较 []==false将计算为true?
但严格的比较会导致错误

这是我不明白的部分

非常感谢

Boolean([])
//true

[] == false
//true

[] === false
//false

可靠检查的最简单方法是使用length属性

[].length // 0, falsy

['something'].length // 1. truthy
更多信息,请参见官方网站

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

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

  • 这里是严格等式运算符。将检查类型和值,因为 两者都是不同的类型,这将是错误的

javascript中的空数组是真实的,为了检查数组,您必须检查数组的长度
if([].length){//do something}else{//do something}
但是为什么布尔([])会返回真值?松散地将空数组与布尔值[]==false进行比较,结果是否为true?但严格的比较会导致错误??这是我不明白的部分,不完全符合逻辑。参见上述关联回购协议。有很多这样的例子都是疯狂的。当你在寻找一个奇怪的错误时,知道他们在那里是很愚蠢的。谢谢!简明扼要的解释
[] == false // => false
[] === false // => false