web-dev-qa-db-fra.com

Comment comparer des variables à non définies, si je ne sais pas si elles existent?

En JavaScript, vous pouvez déclarer une variable et si elle est undefined, vous pouvez vérifier variable == undefined; Je le sais, mais comment pouvez-vous comparer une valeur que vous ne connaissez pas encore si elle est en mémoire?

Par exemple, j'ai une classe qui est créée lorsque l'utilisateur clique sur un bouton. Avant cela, la classe n’était pas définie - elle n’existait nulle part; Comment puis-je le comparer?

Existe-t-il un moyen de ne pas utiliser trycatch?

90
ncubica

Le meilleur moyen est de vérifier type, parce que undefined/null/false sont une chose délicate dans JS. Alors:

if(typeof obj !== "undefined") {
    // obj is a valid variable, do something here.
}

Notez que typeof renvoie toujours une chaîne et ne génère pas d'erreur si la variable n'existe pas du tout.

176
Makram Saleh
if (obj === undefined)
{
    // Create obj
}

Si vous effectuez une programmation JavaScript intensive, prenez l'habitude d'utiliser === et! == lorsque vous souhaitez effectuer une vérification spécifique au type.

De plus, si vous utilisez assez de javascript, je suggère d'utiliser du code via JSLint http://www.jslint.com Cela peut sembler un peu draconien au début, mais la plupart des choses JSLint vous avertit que vous reviendrez éventuellement vous mordre.

50
Timmy
if (document.getElementById('theElement')) // do whatever after this

Pour les choses indéfinies qui génèrent des erreurs, testez le nom de la propriété de l'objet parent au lieu du nom de la variable - so au lieu de:

if (blah) ...

faire:

if (window.blah) ...
2
Delan Azabani

!undefined est vrai en javascript, donc si vous voulez savoir si votre variable ou votre objet est indéfini et que vous souhaitez effectuer des actions, vous pouvez procéder de la manière suivante:

if(<object or variable>) {
     //take actions if object is not undefined
} else {
     //take actions if object is undefined
}
1
Mr.Hunt
if (!obj) {
    // object (not class!) doesn't exist yet
}
else ...
0
Thevs