Je rencontrais beaucoup de bogues dans mon code car je m'attendais à cette expression:
Boolean([]);
pour évaluer faux.
Mais ce n'était pas le cas car il évaluait à vrai.
Par conséquent, les fonctions qui ont éventuellement renvoyé []
comme ceci:
// Where myCollection possibly returned [ obj1, obj2, obj3] or []
if(myCollection)
{
// ...
}else
{
// ...
}
je ne m'attendais pas aux choses.
Est-ce que je me trompe en supposant qu'un []
tableau vide?
En outre, ce comportement est-il cohérent dans tous les navigateurs? Ou y a-t-il des pièges là aussi? D'ailleurs, j'ai observé ce comportement dans Goolgle Chrome.
javascript
arrays
object
conditional
racl101
la source
la source
myCollection.length > 0
?myCollection
se trouve êtrenull
ouundefined
. Vous devez utiliserif(myCollection && myCollection.length > 0)
.myCollection.length > 0
offre une valeur booléenne qui fait ce que l'OP a demandé ... il doit encore faire le travail à partir de là.Réponses:
Depuis http://www.sitepoint.com/javascript-truthy-falsy/
Les valeurs suivantes sont toujours fausses:
Toutes les autres valeurs sont vraies, y compris "0" (zéro entre guillemets), "faux" (faux entre guillemets), les fonctions vides, les tableaux vides et les objets vides.
la source
[] == false
il est évaluétrue
.==
l' aide du comparateur dans le lien que vous avez publié. J'ai commenté juste pour être prudent lorsque je m'attends à une évaluation vraie ou fausse.Vous devriez vérifier le
.length
de ce tableau pour voir s'il contient des éléments.la source