簡體   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