vérification javascript pour non null

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.

1. Ssortingct Non Version

 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.

2. Version non ssortingcte non

 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.

3. Double non version

 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"); }