[英]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 中的同一个位置(因为数组不是原始类型)。 这就是他们不平等的原因。
您想先检查未定义。 如果反过来,如果数组未定义,则会产生错误。
if (array === undefined || array.length == 0) {
// array empty or does not exist
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.