J'ai rencontré le code suivant:
function test(data) {
if (data != null && data !== undefined) {
// some code here
}
}
Je suis un peu nouveau dans JavaScript, mais, d'après d'autres questions que j'ai lues ici, j'ai l'impression que ce code n'a pas beaucoup de sens.
Vous obtiendrez une erreur si vous accédez à une variable non définie dans un contexte autre quetypeof.
Mise à jour: La (citation de la) réponse ci-dessus peut être trompeuse. Il devrait dire «une variable non déclarée» , au lieu de «une variable non définie» .
Comme je l'ai découvert, dans les réponses de Ryan ♦ , maerics et nwellnhof , même si aucun argument n'est fourni à une fonction, ses variables pour les arguments sont toujours déclarées. Ce fait prouve également faux le premier élément de la liste ci-dessous.
D'après ce que je comprends, les scénarios suivants peuvent être rencontrés:
La fonction a été appelée sans argument, créant ainsidataune variable non définie et levant une erreur surdata != null.La fonction a été appelée spécifiquement avec
null(ouundefined), comme argument, auquel casdata != nullprotège déjà le code interne, le rendant&& data !== undefinedinutile.La fonction a été appelée avec un argument non nul, auquel cas elle passera trivialement à la fois
data != nulletdata !== undefined.
Q: Ma compréhension est-elle correcte?
J'ai essayé ce qui suit, dans la console de Firefox:
--
[15:31:31.057] false != null
[15:31:31.061] true
--
[15:31:37.985] false !== undefined
[15:31:37.989] true
--
[15:32:59.934] null != null
[15:32:59.937] false
--
[15:33:05.221] undefined != null
[15:33:05.225] false
--
[15:35:12.231] "" != null
[15:35:12.235] true
--
[15:35:19.214] "" !== undefined
[15:35:19.218] true
Je ne peux pas comprendre un cas où l' data !== undefined après data != null pourrait être d'une quelconque utilité.
if(data)signifierait qu'il ne peut pas passer falseou 0comme valeurs pour data.
if(typeof someUndefVar == whatever) -- workset if(someUnderVar) -- error.
data !== null && data !== undefined, ce qui équivaut à data != nullce qui équivaut à data != undefined. La première forme a tendance à être favorisée car elle est plus explicite sur les conditions, alors qu'il serait facile d'oublier les deux nullet undefinedqu'elles sont vérifiées avec les deux dernières conditions.
undefinedIMO sont une odeur de code. Ce n'est pas un mot-clé protégé comme null, c'est une variable qui se trouve être indéfinie. Ceci est tout à fait valide et va casser votre code:undefined = 1



if (data). C'est un moyen Javascript mnémotechnique pour vérifier si ladatavariable vaut true.undefined,null, Faux, 0, chaîne vide, tableau vide et objet (?) Sans propriété est évaluée à false, le reste est vrai.