[英]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.