繁体   English   中英

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

[英]Why does an empty array pass the if(array !== []) check

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

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

state = {
  array: []
};

if(array !== []){
  //do something
}

我还检查了它是否为空 - 尽管我需要扩展它以便这个 [] 数组不返回 true。

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

请问有什么想法吗?

谢谢

它们不相等,因为在检查中使用了一个新数组,它指向 memory 中的新点。

因此,这些只是两个空的 arrays,但它们并不指向 memory 中的同一个位置(因为数组不是原始类型)。 这就是他们不平等的原因。

在这里您可以找到一些有效的方法来检查: https://www.geeksforgeeks.org/check-if-an-array-is-empty-or-not-in-javascript/#:~:text=the% 20array%20exists.-,%20array%20can%20be%20checked%20if%20it%20is%20empty%20by,the%20array%20is%20not%20empty

您想先检查未定义。 如果反过来,如果数组未定义,则会产生错误。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM