353 votes

Vérifiez si l'objet existe en JavaScript

Comment puis-je vérifier l'existence d'un objet dans JavaScript?

Les travaux suivants:

 if (!null)
   alert("GOT HERE");
 

Mais cela échoue:

 if (!maybeObject)
   alert("GOT HERE");
 

Erreur: maybeObject n'est pas défini.

674voto

JAL Points 11164

Vous pouvez utiliser en toute sécurité l'opérateur typeof sur des variables non définies.

Si une valeur quelconque lui a été affectée, y compris null, typeof renverra autre chose que non défini. typeof renvoie toujours une chaîne.

Donc

 if (typeof maybeObject != "undefined") {
   alert("GOT THERE");
}
 

50voto

galambalazs Points 24393

Il y a beaucoup de demi-vérités ici, alors j'ai pensé que je rendre les choses plus claires.

En fait, vous ne pouvez pas dire avec exactitude si une variable existe (sauf si vous souhaitez envelopper chaque seconde ligne dans un bloc try-catch).

La raison en est que Javascript a cette fameuse valeur de undefined qui étonnamment ne veut pas dire que la variable n'est pas définie, ou qu'il n'existe pas undefined !== not defined

var a;
alert(typeof a); // undefined (declared without a value)
alert(typeof b); // undefined (not declared)

Donc, à la fois une variable qui existe et une autre qui ne peut vous signaler l' undefined type.

Comme pour @Kevin est une idée fausse, null == undefined. C'est en raison de contrainte de type, et c'est la raison principale pourquoi Crockford garde dit à tout le monde qui n'est pas sûr de ce genre de chose à toujours utiliser l'opérateur d'égalité stricte === pour tester éventuellement falsy valeurs. null !== undefined vous donne ce que vous pourriez attendre. Veuillez également noter que foo != null peut être un moyen efficace pour vérifier si une variable est ni undefined ni null. Bien sûr, vous pouvez être explicite, car il peut aider à la lisibilité.

Si vous limitez la question pour vérifier si un objet existe, typeof o == "object" peut être une bonne idée, sauf si vous ne considérez pas les tableaux d'objets, comme ce sera également le type d' object qui peut vous laisser un peu confus. Pour ne pas mentionner qu' typeof null permettra également de vous donner des object ce qui est tout simplement faux.

Le primal zone où vous devriez vraiment être prudent quant à l' typeof, undefined, null, unknown et d'autres misteries d'accueil sont des objets. Ils ne peuvent pas être digne de confiance. Ils sont libres de faire presque tout sale chose qu'ils veulent. Soyez donc prudent avec eux, vérifier la fonctionnalité, si vous le pouvez, car c'est le seul moyen sûr d'utiliser une fonctionnalité qui peut même ne pas exister.

18voto

Calvin L Points 3591
Vous pouvez utiliser

8voto

Nikita Rybak Points 36641

Si c'est un objet global, vous pouvez utiliser if (!window.maybeObject)

6voto

RussellUresti Points 3469

Vous pouvez utiliser "typeof".

 if(typeof maybeObject != "undefined")
    alert("GOT HERE");
 

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