Est-ce que (variable ou {}) travail crossbrowser en Javascript?
-
18-09-2019 - |
Question
La clause if(variable)
dans ce qui suit construit vérifie si la liste / matrice est non nulle / non défini, afin d'éviter une exception:
if (list)
for (var k in list) {
...
if (array)
for (var i = array.length; i >= 0; i--) {
...
Mais la syntaxe JS permet des expressions comme
null || []
undefined || {}
Je peux raccourcir le code par une ligne et toujours vérifier le tableau / objet:
for (var k in obj || {}) {
...
for (var i = (array || {}).length; i >= 0; i--) {
...
La question est essentiellement: l'expression ne null/undefined || []/{}
retourne ce dernier dans tous les navigateurs
modifier. trouvé que les accolades sont mieux pour l'itération de for (var k in list || {})
, car un tableau (les crochets) provoquent une itération et une exception est levée
La solution
Oui, null
, undefined
, 0
, ""
, seront tous résolus à false
, lorsqu'ils sont traités comme un booléen (que l'opérateur de ||
fait), et ainsi, tout navigateur utilisera ce dernier. Ce comportement est tout à fait sûr.
Autres conseils
Oui
Je déteste la limite de 15 char.