Je voulais vérifier si la variable est définie ou non. Par exemple, ce qui suit génère une erreur non définie
alert( x );
Comment puis-je intercepter cette erreur?
javascript
variables
undefined
Jineesh
la source
la source
Réponses:
En JavaScript,
null
c'est un objet. Il y a une autre valeur pour les choses qui n'existent pasundefined
. Le DOM renvoienull
pour presque tous les cas où il ne parvient pas à trouver une certaine structure dans le document, mais en JavaScript luiundefined
- même est la valeur utilisée.Deuxièmement, non, il n'y a pas d'équivalent direct. Si vous voulez vraiment vérifier spécifiquement
null
, faites:Si vous voulez vérifier si une variable existe, cela ne peut être fait qu'avec
try
/catch
, cartypeof
traitera une variable non déclarée et une variable déclarée avec la valeur deundefined
comme équivalente.Mais, pour vérifier si une variable est déclarée et n'est pas
undefined
:Auparavant, il était nécessaire d'utiliser l'
typeof
opérateur pour rechercher les indéfinis en toute sécurité, car il était possible de réaffecterundefined
tout comme une variable. L'ancienne façon ressemblait à ceci:Le problème de la
undefined
réaffectation a été résolu dans ECMAScript 5, qui a été publié en 2009. Vous pouvez désormais utiliser===
et!==
tester en toute sécuritéundefined
sans utilisertypeof
car ilundefined
est en lecture seule depuis un certain temps.Si vous voulez savoir si un membre existe indépendamment mais ne vous souciez pas de sa valeur:
Si vous voulez savoir si une variable est véridique :
La source
la source
typeof
opérateur (typeof null == 'object'
). Lanull
valeur est une valeur primitive , qui est la seule valeur du type Null .La seule façon de vraiment tester si une variable
undefined
est de faire ce qui suit. Rappelez-vous, undefined est un objet en JavaScript.Certaines des autres solutions de ce fil vous feront croire qu'une variable n'est pas définie même si elle a été définie (avec une valeur NULL ou 0, par exemple).
la source
ReferenceError
.undefined
est un objet en javascript est une désinformation. Est-ce que cette déclaration se rapporte à votre réponse de toute façon? Il s'agit d'une valeurundefined
de typeundefined
, affectée à l'identificateur global nomméundefined
.undefined
est en lecture seule depuis ES5. Vous pouvez tester sans risque pour non défini en utilisantif (x === undefined) {...}
comme ou en utilisant un raccourci ceci:if (x === void 0)
.Techniquement, la bonne solution est (je crois):
Vous pouvez parfois devenir paresseux et utiliser
mais cela permet à la fois à une variable non définie x et à une variable x contenant null de renvoyer true.
la source
var x;
ettypeof x;
vous obtiendrez"undefined"
comme si vous l'aviez faittypeof lakjdflkdsjflsj;
Une version encore plus simple et plus abrégée serait:
OU
la source
J'ai souvent fait:
la source
Vous pouvez également utiliser l'opérateur conditionnel ternaire:
la source
var a = false;
? Vous devriez vérifier que si à laa===undefined
placevar x;
faire ci-dessus générera une erreur!a
testera vrai pourundefined
, il testera également vrai pour0
etnull
etfalse
. Ceci est très incorrect et devrait être supprimé.J'utilise souvent le moyen le plus simple:
ÉDITER:
Sans initialiser la variable, une exception sera levée "Uncaught ReferenceError: la variable n'est pas définie ..."
la source
Uncaught ReferenceError: variable is not defined
variable
est défini parvar variable;
. Et cet extrait remplaceravariable
la portée locale. Il peut briser la logique qui s'attend à accéder à une fermeture ou à une variable globale. C'est à dire:var variable = 1; function test() { var variable; if (variable === undefined){ console.log('Variable is undefined'); } else { console.log('Variable is defined: ' + variable); } } test(); // Variable is undefined
Une autre "solution" potentielle consiste à utiliser l'
window
objet. Il évite le problème d'erreur de référence dans un navigateur.la source
undefined
. Cela ne fera pas ça.L'erreur vous dit que cela
x
n'existe même pas! Il n'a pas été déclaré , ce qui est différent de l' attribution d' une valeur.Si vous déclariez
x
, vous n'obtiendrez pas d'erreur. Vous obtiendrez une alerte qui indiqueundefined
carx
existe / a été déclaré mais n'a pas reçu de valeur.Pour vérifier si la variable a été déclarée, vous pouvez utiliser
typeof
n'importe quelle autre méthode pour vérifier si une variable existe provoquera la même erreur que vous avez initialement.Ceci vérifie le type de la valeur stockée dans
x
. Il ne reviendra queundefined
s'ilx
n'a pas été déclaré OU s'il a été déclaré et n'a pas encore été attribué.la source
typeof
opérateur.L'
void
opérateur renvoieundefined
pour tout argument / expression qui lui est passé. de sorte que vous pouvez tester contre le résultat ( en fait quelques minifiers changer votre code deundefined
pourvoid 0
sauver un couple de personnages)Par exemple:
la source
typeof
et la réflexionundefined
peut être réaffectée, ce qui n'a pas été possible depuis environ une décennie.undefined
, car Dieu ne sait que pour quelle raison, l'utilisationvoid 0
reviendra toujoursundefined
malgré tout.Nous pouvons vérifier
undefined
comme suitla source
Faites juste quelque chose comme ci-dessous:
et appelez-le comme:
la source
La réponse acceptée est correcte. Je voulais juste ajouter une option de plus. Vous pouvez également utiliser le
try ... catch
bloc pour gérer cette situation. Un exemple bizarre:Soyez conscient du
catch
bloc, qui est un peu désordonné, car il crée une portée au niveau du bloc. Et, bien sûr, l'exemple est extrêmement simplifié pour répondre à la question posée, il ne couvre pas les meilleures pratiques de traitement des erreurs;).la source
J'utilise une petite fonction pour vérifier qu'une variable a été déclarée, ce qui réduit vraiment l'encombrement dans mes fichiers javascript. J'ajoute une vérification de la valeur pour m'assurer que la variable existe non seulement, mais a également reçu une valeur. La deuxième condition vérifie si la variable a également été instanciée, car si la variable a été définie mais pas instanciée (voir l'exemple ci-dessous), elle générera toujours une erreur si vous essayez de référencer sa valeur dans votre code.
Non instancié -
var my_variable;
Instancié -var my_variable = "";
Vous pouvez ensuite utiliser une instruction conditionnelle pour tester que la variable a été à la fois définie ET instanciée comme ceci ...
ou pour tester qu'il n'a pas été défini et instancié
la source
return typeof el !== "undefined" && typeof el.val() !== "undefined"