Napotkałem wiele błędów w moim kodzie, ponieważ oczekiwałem tego wyrażenia:JavaScript: pusta tablica, [] zwraca wartość true w strukturach warunkowych. Dlaczego to?
Boolean([]);
, aby ocenić jako fałszywy.
Ale tak nie było, ponieważ oceniono to jako prawdziwe.
Dlatego funkcje, które ewentualnie zwrócone []
takiego:
// Where myCollection possibly returned [ obj1, obj2, obj3] or []
if(myCollection)
{
// ...
}else
{
// ...
}
nie zrobił oczekiwanych rzeczy.
Czy myliłem się przyjmując, że []
jest pustą tablicą?
Czy zachowanie to jest spójne we wszystkich przeglądarkach? Czy są tam też jakieś potknięcia? Obserwowałem to zachowanie w Goolgle Chrome przy okazji.
tablice są obiektami, obiekty są zgodne z prawdą. po prostu zapytaj o array.length, jeśli nie zero, będzie to prawda. kiedy jawnie przekonwertujesz na Boolean, tablica najpierw zmieni się w pusty łańcuch, a następnie pusty łańcuch zmieni się w false. – dandavis
Dlaczego nie używasz 'myCollection.length> 0'? – Steve
@Steve - to nie zadziała, jeśli 'myCollection' stanie się' null' lub 'undefined'. Musisz użyć 'if (myCollection && myCollection.length> 0)'. –