1 votes

Comment gérer l'expression "undefined" en JavaScript ?

Duplicata possible :
Détection d'une propriété d'objet non définie en JavaScript

A partir de l'exemple JavaScript ci-dessous,

try {
    if(jsVar) {
        proceed();
    }
}
catch(e) {
    alert(e);
}

ce jsVar est déclaré et initialisé dans un autre fichier.

Le problème est que le code lance une erreur non définie lorsqu'il est exécuté avant que l'autre fichier (où il est déclaré et initialisé) ne soit exécuté. C'est pourquoi il est entouré de try et catch.

Quelle est la meilleure façon de gérer cette erreur non définie que le try catch ?

117voto

neutrino Points 11643

Vous pouvez vérifier les faits avec

if (typeof jsVar == 'undefined') {
  ...
}

15voto

Christoph Points 64389

Comme c'est souvent le cas avec JavaScript, il y a plusieurs façons de procéder :

typeof foo !== 'undefined'
window.foo !== undefined
'foo' in window

Les deux premiers devraient être équivalents (pour autant que foo n'est pas caché par une variable locale), tandis que la dernière renverra true si la variable globale est définie, mais non initialisée (ou explicitement positionnée à undefined ).

0voto

Scott Points 80

En JavaScript, les valeurs suivantes provoqueront l'affichage de l'icône if pour que la condition échoue et n'exécute pas sa déclaration : null, undefined, false, NaN, le nombre 0 et la chaîne vide ''.

En supposant que la variable jsVar est un booléen et que nous voulons appeler la méthode proceed() lorsque jsVar est vrai, nous pouvons effectuer la vérification suivante.

if (jsVar && jsVar == true)
    proceed();

L'extrait de code ci-dessus vérifie d'abord que jsVar a été défini, puis que sa valeur est vraie. La condition if ne sera satisfaite que si les deux conditions sont remplies.

Si jsVar n'est pas un booléen, nous pouvons substituer la vérification appropriée à la place de jsVar == true dans le code ci-dessus.

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