Comment vérifier si une variable existe en JavaScript : guide complet

Formateur Python en ligne pour débutants

Apprenez Python facilement sans surcharge théorique. Résolvez des tâches pratiques avec vérification automatique et écrivez du code directement dans le navigateur.

Start Course

La variable existe, mais comme si elle n'existait pas ? Décryptage des vérifications en JavaScript

\n\n

Avez-vous déjà écrit un script, lancé, et soudain — boum ! — la console du navigateur devient rouge avec le cri Uncaught ReferenceError: myVar is not defined ? Familier. Ou l'inverse : la variable est déclarée, mais vous n'êtes pas sûr qu'une valeur lui ait été assignée. En JavaScript, ces deux notions (« existe » et « est initialisée ») sont souvent confondues, même par les développeurs expérimentés.

\n\n

Dans ce guide, nous allons une fois pour toutes comprendre comment vérifier correctement si une variable existe en JavaScript, la différence entre « définie » et « initialisée », et comment éviter 90% des erreurs liées à undefined et ReferenceError. C'est parti !

\n\n

L'essentiel en bref : que signifie « une variable existe » ?

\n\n

En JavaScript, une variable a trois états :

\n\n
    \n
  • Non déclarée (undeclared) — la variable n'existe pas du tout en mémoire. Tenter d'y accéder génère une ReferenceError.
  • \n
  • Déclarée, mais non initialisée (declared, but undefined) — nous avons écrit let x; ou var y;, mais sans assigner de valeur. La variable existe, son type est undefined.
  • \n
  • Déclarée et initialisée (declared and initialized) — la variable a une valeur spécifique (nombre, chaîne, objet, etc.).
  • \n
\n\n

La plupart des questions sur Stack Overflow (et il y en a des milliers) se résument à une seule : « Comment savoir si une variable ne provoquera pas d'erreur lors de l'accès ? » La réponse — utilisez typeof. Mais il y a des nuances. Allons-y.

\n\n

Méthode n°1. L'opérateur typeof — votre meilleur ami

\n\n

La manière la plus fiable et la plus sûre de vérifier si une variable est définie en JavaScript est l'opérateur typeof. Son principal avantage : il ne génère jamais d'erreur, même si la variable n'est pas déclarée.

\n\n

Exemple pour une variable non déclarée

\n\n
// La variable myVar n'est pas déclarée\nif (typeof myVar !== 'undefined') {\n    console.log('La variable existe !');\n} else {\n    console.log('La variable N\'existe PAS ou sa valeur est undefined');\n}\n// Affiche : "La variable N'existe PAS ou sa valeur est undefined"
\n\n

Notez que typeof retourne la chaîne 'undefined' à la fois pour une variable non déclarée et pour une variable déclarée mais non initialisée (let x;). C'est à la fois un avantage et un inconvénient. Avantage — nous n'attrapons pas d'erreur. Inconvénient — nous ne distinguons pas ces deux cas.

\n\n

Exemple pour une variable déclarée mais vide

\n\n
let myVar; // déclarée, mais non initialisée\nconsole.log(typeof myVar); // "undefined" — également undefined !\n\nif (typeof myVar !== 'undefined') {\n    console.log('La variable existe et a une valeur');\n} else {\n    console.log('La variable est undefined (soit non déclarée, soit non initialisée)');\n}
\n\n

Conclusion : typeof est la solution idéale si vous avez simplement besoin d'éviter une ReferenceError. Si vous devez distinguer « non déclarée » de « vide », lisez la suite.

\n\n

Méthode n°2. Vérification via window (contexte global)

\n\n

Si vous travaillez dans un navigateur et que la variable est déclarée globalement (via var ou implicitement), elle devient une propriété de l'objet window. Cela ouvre des possibilités supplémentaires pour vérifier l'existence d'une variable.

\n\n

Utilisation de l'opérateur in

\n\n
// Variable globale\nvar globalVar = 42;\n\nconsole.log('globalVar' in window); // true\nconsole.log('nonExistentVar' in window); // false
\n\n

Cette méthode fonctionne uniquement pour les variables globales déclarées avec var ou assignées sans mot-clé. let et const ne créent pas de propriétés de l'objet window (elles vivent dans la portée de bloc).

\n\n

Uti

Blogs

Book Recommendations