Je collerais à l'aide d' typeof foo === "undefined"
partout. Qui ne peut jamais se tromper.
J'imagine que la raison pour laquelle jQuery recommande les deux différentes méthodes est qu'elles définissent leurs propres undefined
variable dans la fonction jQuery code de vie, donc à l'intérieur de cette fonction undefined
est à l'abri de la falsification de l'extérieur. J'imagine aussi que quelqu'un, quelque part, a comparé les deux approches différentes et a découvert que l' foo === undefined
est plus rapide et, par conséquent, décidé qu'il est le chemin à parcourir. [Mise à JOUR: comme mentionné dans les commentaires, la comparaison avec d' undefined
est également légèrement plus courte, ce qui pourrait être une considération.] Cependant, le gain en situations pratiques serez tout à fait négligeable: cette case ne sera jamais, jamais être une sorte de goulot d'étranglement, et ce que vous perdez est significatif: l'évaluation d'une propriété d'un objet hôte de comparaison peuvent jeter une erreur alors qu'un typeof
case ne le sera jamais.
Pour exemple, le code suivant est utilisé dans IE pour l'analyse XML:
var x = new ActiveXObject("Microsoft.XMLDOM");
Afin de vérifier si elle a un loadXML
méthode de sécurité:
typeof x.loadXML === "undefined"; // Returns false
Sur l'autre main:
x.loadXML === undefined; // Throws an error
Mise à JOUR
Un autre avantage de l' typeof
vérifier que j'ai oublié de mentionner que ça fonctionne aussi avec des variables non déclarées, qui l' foo === undefined
contrôle n'est pas, et, en fait, jette un ReferenceError
. Grâce à @LinusKleen de me le rappeler. Par exemple:
typeof someUndeclaredVariable; // "undefined"
someUndeclaredVariable === undefined; // throws a ReferenceError
Ligne du bas: utilisez toujours de l' typeof
vérifier.