Je rencontrais beaucoup de bugs dans mon code parce que je m'attendais à cette expression:
Boolean([]);
à évaluer comme faux.
Mais ce n’était pas le cas, car il s’avérait vrai.
Par conséquent, les fonctions qui ont éventuellement retourné []
comme ça:
// Where myCollection possibly returned [ obj1, obj2, obj3] or []
if(myCollection)
{
// ...
}else
{
// ...
}
n'a pas fait les choses attendues.
Est-ce que je me trompe en supposant que []
un tableau vide?
En outre, ce comportement est-il cohérent dans tous les navigateurs? Ou y a-t-il des pièges aussi? J'ai observé ce comportement dans Goolgle Chrome en passant.
De http://www.sitepoint.com/javascript-truthy-falsy/
Les valeurs suivantes sont toujours faussées:
Toutes les autres valeurs sont vérité, y compris "0" (zéro entre guillemets), "faux" (faux entre guillemets), des fonctions vides, des tableaux vides et des objets vides.
Vous devriez vérifier le .length
de ce tableau pour voir s’il contient des éléments.
if (myCollection) // always true
if (myCollection.length) // always true when array has elements
if (myCollection.length === 0) // same as is_empty(myCollection)