Double Possible:
Comment puis-je vérifier si une variable est définie dans le code JavaScript?
Est-il une fonction standard pour vérifier la valeur null, indéfini, ou vide de variables en JavaScript?J'ai un script qui se produit en deux parties.
La première partie met en place un var:
var pagetype = "textpage";
La 2ème partie est une simple déclaration si:
if(pagetype == "textpage") { //do something };
Maintenant la 2ème partie, l'instruction if, apparaît sur toutes les pages de mon site. Mais la première partie, où le var est déclarée, n'apparaît que sur certaines de mes pages.
Sur les pages sans le var tout naturellement que je reçois cette erreur:
Uncaught ReferenceError: pagetype is not defined
Donc ma question est: est-il possible avec JavaScript ou JQ pour détecter si une variable existe (et pas seulement si il a données, est attribué à)?
Je m'imagine, je voudrais juste utiliser un autre si tresorerie, par exemple:
if ("a var called pagetypes exists")....
Réponses
Trop de publicités? Pour votre cas, 99,9% des autres réponses elclanrs
sont correctes.
Mais parce que undefined
est une valeur valide, si quelqu'un devait tester une variable non initialisée
var pagetype; //== undefined
if (typeof pagetype === 'undefined') //true
le seul moyen fiable à 100% de déterminer l'existence d'une variable consiste à intercepter l'exception;
var exists = false;
try { pagetype; exists = true;} catch(e) {}
if (exists && ...) {}
Mais je ne l'écrirais jamais de cette façon
Pour tester l'existence, il existe deux méthodes.
une. "property" in object
Cette méthode vérifie l'existence de la propriété dans la chaîne de prototypes.
b. object.hasOwnProperty( "property" )
Cette méthode ne monte pas dans la chaîne de prototypes pour vérifier l'existence de la propriété, elle doit exister dans l'objet sur lequel vous appelez la méthode.
var x; // variable declared in global scope and now exists
"x" in window; // true
window.hasOwnProperty( "x" ); //true
Si nous testions en utilisant l'expression suivante, elle renverrait false
typeof x !== 'undefined'; // false