Ich habe viele Fehler in meinem Code festgestellt, weil ich diesen Ausdruck erwartet habe:
Boolean([]);
zu falsch bewerten.
Dies war jedoch nicht der Fall, da es als wahr bewertet wurde.
Daher Funktionen, die möglicherweise []
wie folgt zurückgegeben wurden:
// Where myCollection possibly returned [ obj1, obj2, obj3] or []
if(myCollection)
{
// ...
}else
{
// ...
}
erwartete Dinge nicht.
Bin ich falsch in der Annahme, dass []
ein leeres Array?
Ist dieses Verhalten auch in allen Browsern konsistent? Oder gibt es dort auch Fallstricke? Ich habe dieses Verhalten übrigens in Goolgle Chrome beobachtet.
javascript
arrays
object
conditional
racl101
quelle
quelle
myCollection.length > 0
?myCollection
zufällignull
oderundefined
. Sie müssen verwendenif(myCollection && myCollection.length > 0)
.myCollection.length > 0
einen booleschen Wert bietet, der das tut, was das OP verlangt ... er muss die Arbeit von dort aus noch erledigen.Antworten:
Von http://www.sitepoint.com/javascript-truthy-falsy/
Die folgenden Werte sind immer falsch:
Alle anderen Werte sind wahr, einschließlich "0" (Null in Anführungszeichen), "false" (falsch in Anführungszeichen), leere Funktionen, leere Arrays und leere Objekte.
quelle
[] == false
er ausgewertettrue
.==
Komparator in dem von Ihnen geposteten Link zeigen. Ich habe nur kommentiert, um vorsichtig zu sein, wenn ich eine wahre oder falsche Bewertung erwarte.Sie sollten
.length
das Array überprüfen , um festzustellen, ob es Elemente enthält.quelle