Javascript 为什么空数组通过if(array!=[])检查

Javascript 为什么空数组通过if(array!=[])检查,javascript,arrays,if-statement,Javascript,Arrays,If Statement,嗨,我一直在调试一个javascript问题,其中一个空数组默认值设置为state,通过一个条件检查,该检查检查是否为空 我一定是忽略了什么。以下是我所拥有的: state = { array: [] }; if(array !== []){ //do something } 我还检查了它是否为空——尽管我需要扩展它,以便这个[]数组不返回true 我还尝试了array.length>0来代替检查[] 有什么想法吗 谢谢您想先检查未定义。如果反过来做,如果数组未定义,它将生成一个错误

嗨,我一直在调试一个javascript问题,其中一个空数组默认值设置为state,通过一个条件检查,该检查检查是否为空

我一定是忽略了什么。以下是我所拥有的:

state = {
  array: []
};

if(array !== []){
  //do something
}
我还检查了它是否为空——尽管我需要扩展它,以便这个[]数组不返回true

我还尝试了array.length>0来代替检查[]

有什么想法吗


谢谢

您想先检查未定义。如果反过来做,如果数组未定义,它将生成一个错误

if (array === undefined || array.length == 0) {
    // array empty or does not exist
}

它们不相等,因为在检查中使用了一个新数组,它指向内存中的新位置

所以,这只是两个空数组,但它们并不指向内存中的同一点(因为数组不是基元类型)。这就是他们不平等的原因


在这里,您可以找到一些有效的方法来检查:。

注意
[]=[]
返回
false
。它比较了这些数组的“指针”。感谢您的及时响应。如果在!==[]检查?也就是说,在适当实施isEmpty的情况下,没有必要这样做。不客气。