J'utilise personnellement
myVar === undefined
Attention : Veuillez noter que ===
est utilisé sur ==
et que myVar
a été précédemment déclaré (pas défini ).
Je n'aime pas typeof myVar === "undefined"
. Je pense que c'est long et inutile. (Je peux faire la même chose en moins de code).
Certaines personnes vont s'effondrer de douleur en lisant ceci, en criant : "Attends ! WAAITTT ! !! undefined
peut être redéfini !"
Cool. Je connais ça. Mais encore une fois, la plupart des variables en Javascript peuvent être redéfinies. Ne faut-il jamais utiliser un identifiant intégré qui peut être redéfini ?
Si vous suivez cette règle, tant mieux pour vous : vous n'êtes pas un hypocrite.
Le fait est que, pour faire beaucoup de travail réel en JS, les développeurs doivent compter sur les identifiants redéfinissables pour être ce qu'ils sont. Je n'entends pas les gens me dire que je ne devrais pas utiliser setTimeout
parce que quelqu'un peut
window.setTimeout = function () {
alert("Got you now!");
};
En fin de compte, l'argument "il peut être redéfini" pour ne pas utiliser un modèle brut === undefined
est bidon.
(Si vous avez toujours peur de undefined
étant redéfini, pourquoi intégrez-vous aveuglément du code de bibliothèque non testé dans votre base de code ? Ou encore plus simple : un outil de linting).
De plus, comme le typeof
cette technique permet de "détecter" les variables non déclarées :
if (window.someVar === undefined) {
doSomething();
}
Mais ces deux techniques fuient dans leur abstraction. Je vous conseille vivement de ne pas utiliser cette technique ou même
if (typeof myVar !== "undefined") {
doSomething();
}
Pensez-y :
var iAmUndefined;
Pour savoir si cette variable est déclarée ou non, vous devrez peut-être recourir à la fonction in
opérateur. (Dans de nombreux cas, vous pouvez simplement lire le code O_o).
if ("myVar" in window) {
doSomething();
}
Mais attendez ! Il y a autre chose ! Et si un prototype de chaîne magique se produisait ? Maintenant, même le supérieur in
ne suffit pas. (Bon, j'en ai fini avec cette partie sauf pour dire que pour 99% du temps, === undefined
(et ****cough**** typeof
) fonctionne très bien. Si cela vous intéresse vraiment, vous pouvez lire ce sujet à part).
9 votes
Voulez-vous vérifier si uniquement
undefined
ounull
également ?4 votes
Vérifiez ceci stackoverflow.com/questions/27509/
6 votes
@Robert - cette question a une réponse acceptée que les réponses ici ont prouvé être fausse.
3 votes
Voir : Comment vérifier la présence d'undefined en javascript ? y si une variable est indéfinie y Comment gérer le paramètre "undefined" en javascript ?
2 votes
Explication des propriétés définies/non définies des objets, voir ceci : [ [stackoverflow.com/a/18135509/1823469][1]](http://stackoverflow.com/a/18135509/1823469][1]) [1] : stackoverflow.com/a/18135509/1823469
3 votes
Ce "double" concerne les propriétés des objets, de sorte que certaines des réponses ne s'appliquent pas très bien à cette question, qui porte sur les variables.
1 votes
Savoir ce qu'est undefined et sa relation avec scope codepen.io/grumpy/post/undefined-scope-in-javascript
1 votes
MaVariable === indéfinie
2 votes
La question est bonne. Ce post montre à quel point js est mauvais, surtout qu'il s'agit d'un outil de développement web primaire. Il montre à quel point le développement web est fragile à notre époque ! !!
0 votes
Qu'en est-il
myVar ===
void(0)
?