Movatterモバイル変換


[0]ホーム

URL:


  1. Web
  2. JavaScript
  3. Référence
  4. Objets natifs standards
  5. undefined

Cette page a été traduite à partir de l'anglais par la communauté.Vous pouvez contribuer en rejoignant la communauté francophone sur MDN Web Docs.

View in EnglishAlways switch to English

undefined

Baseline Widely available

Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis ⁨juillet 2015⁩.

La propriété globaleundefined représente la valeur primitiveundefined. Cette valeur est l'un des types primitifs de JavaScript.

Attributs deundefined
ÉcrivableNon
ÉnumérableNon
ConfigurableNon

Exemple interactif

function test(t) {  if (t === undefined) {    return "Undefined value!";  }  return t;}let x;console.log(test(x));// Expected output: "Undefined value!"

Syntaxe

js
undefined;

Description

undefined est une propriété del'objet global, c'est-à-dire qu'elle est accessible globalement. La valeur initiale d'undefined est la valeur primitiveundefined.

Dans les navigateurs modernes (JavaScript 1.8.5 / Firefox 4+), d'après la spécification ECMAScript 5,undefined est une propriété non-configurable et non accessible en écriture. Si, toutefois, elle peut être modifiée dans l'environnement utilisé, il faut éviter de l'écraser.

Une variable pour laquelle aucune valeur n'a été assignée sera de typeundefined. Une méthode ou instruction renvoie égalementundefined si la variable à évaluer n'a pas de valeur assignée. Une fonction renvoieundefined si aucune valeur n'a étérenvoyée.

Attention :Puisqueundefined n'est pas unmot réservé du langage JavaScript, il peut être utilisé commeidentifiant (nom de variable) dans toute portée autre que la portée globale. Ceci est une très mauvaise idée pour la lisibilité du code et sa maintenabilité.

js
// À NE PAS FAIRE// affiche "toto string" dans la console(function () {  const undefined = "toto";  console.log(undefined, typeof undefined);})();// affiche "toto string" dans la console(function (undefined) {  console.log(undefined, typeof undefined);})("toto");

Exemples

L'égalité stricte etundefined

Il est possible d'utiliserundefined et les opérateurs stricts pour l'égalité et l'inégalité strictes afin de déterminer si une variable a une valeur affectée. Dans le code qui suit, la variablex n'est pas initialisée et la première instructionif sera évaluée àtrue (vrai).

js
let x;if (x === undefined) {  // ces instructions seront exécutées} else {  // ces instructions ne seront pas exécutées}

Note :L'opérateur d'égalité stricte doit être utilisé ici plutôt que l'opérateurd'égalité simple. En effet,x == undefined vérifie également six vautnull, tandis que l'égalité stricte ne le fait pas.null n'est pas équivalent àundefined.

Voir la page sur lesopérateurs de comparaison pour plus de détails.

L'opérateurtypeof etundefined

L'opérateurtypeof peut également être utilisé :

js
let x;if (typeof x === "undefined") {  // ces instructions seront exécutées}

Une des raisons pour utiliser l'opérateurtypeof est qu'il ne renverra pas d'erreur si la variable n'a pas été définie :

js
// x n'a pas encore été définiif (typeof x === "undefined") {  // donnera true sans erreur  // ces instructions seront exécutées}if (x === undefined) {  // déclenche une ReferenceError}

Il existe toutefois une autre alternative. Puisque JavaScript utilise la portée statique, on saura qu'une variable a été déclarée si elle est définie dans un contexte englobant.

La portée globale est rattachée àl'objet global, alors on peut vérifier l'existence d'une variable dans le contexte global en examinant la présence d'une propriété surl'objet global via l'opérateurin. Par exemple :

js
if ("x" in window) {  // ces instructions seront exécutées uniquement  // si x est défini dans la portée globale}

L'opérateurvoid etundefined

L'opérateurvoid est une troisième solution.

js
let x;if (x === void 0) {  // ces instructions seront exécutées}// y n'a pas été défini avantif (y === void 0) {  // déclenche une Uncaught ReferenceError: y is not defined}

Spécifications

Specification
ECMAScript® 2026 Language Specification
# sec-undefined

Compatibilité des navigateurs

Voir aussi

Help improve MDN

Learn how to contribute

Cette page a été modifiée le par lescontributeurs du MDN.


[8]ページ先頭

©2009-2025 Movatter.jp