2466 votes

Comment faire pour déterminer si la variable est 'undefined' ou 'null'

Double Possible:
La détection d'une non défini propriété de l'objet en JavaScript

Comment puis-je déterminer si la variable est 'undefined' ou 'null'. Mon code est comme suit:

EmpName = $("div#esd-names div#name").attr('class');
if(EmpName == 'undefined'){
    //DO SOMETHING
};

Mais si je fais cela, l'interpréteur JavaScript interrompt l'exécution.

3303voto

Sarfraz Points 168484

Vous pouvez le faire comme ceci:

 if(typeof variable_here === 'undefined'){
   // your code here.
 };

Utilisant l'opérateur d'égalité stricte === ci-dessus est une bonne idée, car en JS, vous pouvez nommer une variable undefined trop:

var undefined = "something";

Donc à l'aide d' === permet de s'assurer que vous êtes vraiment vérifier à l'encontre undefined de la valeur d'une variable.

Vous pouvez également le faire:

 if(! variable_here){
   // your code here.
 };

Voir plus d'infos sur l'opérateur typeof.


Mise à jour:

Attention, typeof null retours object:

typeof null == 'object' // true

Vous pouvez également vouloir vérifier:

1262voto

Aerovistae Points 3245

Mieux écrire:

if (variable === undefined || variable === null) {
    //do something
}

De cette façon, c'est limpide ce cas, vous voulez prendre.

À l'aide de == pour attraper les deux encouragés dans une autre réponse est très imprudent....quelqu'un à la lecture de votre code qui ignorent peut-être la différence entre == et === vont penser que vous êtes seulement attraper null et ne sera pas conscient qu'il s'agit également sur les cas où variable est undefined.

De plus, l'énoncé var undefined = "something" comme indiqué dans l'actuel accepté réponse est erronée comme des versions plus récentes d'ECMAScript. Vous ne pouvez pas attribuer à l' undefined. Il pourrait ne pas jeter une erreur, mais la valeur de undefined sera inchangé. De toute façon c'est totalement hors de propos à la question.


Edit: plus expérimenté, développeur JS maintenant, je dois noter que l'utilisation d' if (variable == null) est en fait la norme pour attraper null et undefined simultanément. Lors de l'écriture professionnelle JS, il est pris pour acquis que le comportement est entendu. Mais il ne fait jamais de mal à écrire dans un commentaire si vous vous sentez l'intention n'est pas claire.

275voto

jkindwall Points 247

En combinant les réponses ci-dessus, il semble que la réponse la plus complète serait:

if (typeof(variable) == 'undefined' || variable == null)
{
    // Do stuff
}

Cela devrait fonctionner pour n'importe quelle variable qui est soit non déclarées ou déclarées et explicitement définie à null ou undefined. L'expression booléenne doit évaluer à la valeur false pour toute variable déclarée, qui a une réelle valeur non null.

33voto

Chetan Sastry Points 14742

jQuery attr() de la fonction renvoie une chaîne vide ou la valeur réelle (et jamais null ou undefined). Le seul moment où il retourne undefined , c'est quand votre sélecteur n'a pas renvoyé de n'importe quel élément.

Si vous souhaitez tester contre une chaîne vide. Sinon, puisque les chaînes vides, null et undefined sont des faux-y, tu peux faire ça:

if (!EmpName) { //do something }

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X