Vous trouverez ci-dessous un extrait de code dans lequel nous récupérons une valeur de formulaire. Avant de poursuivre le traitement, vérifiez si la valeur n’est pas nulle.
var val = document.FileList.hiddenInfo.value; alert("val is " + val); // this prints null which is as expected if (val != null) { alert("value is "+val.length); // this returns 4 } else { alert("value* is null"); }
Des idées pourquoi ça se passe alors .. ??
C’est parce que val n’est pas null
, mais contient 'null'
comme une chaîne.
Essayez de vérifier avec ‘null’
if ('null' != val)
Pour une explication de quand et pourquoi cela fonctionne, voir les détails ci-dessous .
cela fera le tour pour vous
if (!!val) { alert("this is not null") } else { alert("this is null") }
Il y a 3 façons de vérifier “non nul”. Je recommande d’utiliser la version Ssortingct Not.
if (val !== null) { ... }
La version Ssortingct Not Version utilise l’algorithme de «comparaison ssortingcte d’égalité» http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.6 . Le !==
a des performances plus rapides que l’opérateur !=
Car l’algorithme de comparaison ssortingct d’égalité ne transcrit pas les valeurs.
if (val != 'null') { ... }
La version non-ssortingcte utilise “l’algorithme de comparaison d’égalité abstraite” http://www.ecma-international.org/ecma-262/5.1/#sec-11.9.3 . La performance !=
Est plus lente que celle de l’opérateur !==
car l’algorithme de comparaison des égalités abstraites définit les valeurs par défaut.
if (!!val) { ... }
La double version pas !!
a des performances plus rapides que les versions Ssortingct Not Version !==
et Non-Ssortingct Not Version !=
( https://jsperf.com/tfm-not-null/6 ). Cependant, cela va prendre en compte les valeurs de “Falsey” comme undefined
et NaN
dans False ( http://www.ecma-international.org/ecma-262/5.1/#sec-9.2 ), ce qui peut conduire à des résultats inattendus lisibilité car null
n’est pas explicitement indiqué.
Utilisez !==
as !=
amènera dans un monde de tromperie de table de vérité JavaScript non transitive.
Vous devriez utiliser l’opérateur de comparaison ssortingct not equals
!==
sorte que si l’utilisateur entre "null"
vous n’obtiendrez pas l’ else
.
C’est peut-être parce que la valeur de val
est en fait la chaîne "null"
plutôt que la valeur null
.
Si vous voulez pouvoir inclure 0 comme valeur valide:
if (!!val || val === 0) { ... }
Cela devrait bien fonctionner ..
if(val!= null) { alert("value is "+val.length); //-- this returns 4 } else { alert("value* is null"); }
Cela fonctionnera:
if (val) { alert("Not null"); } else { alert("Null"); }