不管“if([])”是什么,它似乎不是假的

What `if ([ ])` turns out to be,it seems not falsy

本文关键字:是什么 if 不管      更新时间:2023-09-26

我从之前的代码运行中得到一个空数组,我想检查它是否在if语句中为空,我使用

if (emptyArr) {
  //do something here. 
}

一开始收到了一些奇怪的结果,现在我知道我应该用if (emptyArr.length === 0 ) {}代替,但只是出于好奇,上面的代码块结果是什么?

空数组仍然是对象,并且对象引用始终是if谓词中的true。因此

if ([]) alert("hello world");

总是会触发警报

typeof []
"object"

因此if({})为真,if([])也为真。

这是一个关于为什么对象是真的问题