Double Possible:
La détection d'une non défini propriété de l'objet en JavaScriptComment 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.
Réponses
Trop de publicités?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:
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.
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.
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 }