与空数组和布尔值的Javascript比较

lan*_*nte 5 javascript

正如你在这个javascript平等表中看到的那样,javascript平等传递性很奇怪.

我理解该表的大部分结果,但我对以下比较有疑问:

[] == true // false
[] == false // true
!![] == true // true
!![] == false // false
Run Code Online (Sandbox Code Playgroud)

但是也:

if ([]) {
    // this code will run
}

if (!![]) {
    // and of course this too
}
Run Code Online (Sandbox Code Playgroud)

为什么?这是另一个极端不好的部分吗?有这个合理的解释吗?