[ Web Proxy ]
URL:
Viewing: https://developer.mozilla.org/fr/docs/Web/JavaScript/Reference/Global_Objects/undefined [Back]  [Original]

undefined - JavaScript | MDN

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 English Always switch to English

undefined

Baseline Large disponibilit

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 proprit globale undefined reprsente la valeur primitive undefined. Cette valeur est l'un des types primitifs de JavaScript.

Attributs de undefined
crivableNon
numrableNon
ConfigurableNon

Dans cet article

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 proprit de l'objet global, c'est--dire qu'elle est accessible globalement. La valeur initiale d'undefined est la valeur primitive undefined.

Dans les navigateurs modernes (JavaScript 1.8.5 / Firefox 4+), d'aprs la spcification ECMAScript 5, undefined est une proprit non-configurable et non accessible en criture. Si, toutefois, elle peut tre modifie dans l'environnement utilis, il faut viter de l'craser.

Une variable pour laquelle aucune valeur n'a t assigne sera de type undefined. Une mthode ou instruction renvoie galement undefined si la variable valuer n'a pas de valeur assigne. Une fonction renvoie undefined si aucune valeur n'a t renvoye.

Attention : Puisque undefined n'est pas un mot rserv du langage JavaScript, il peut tre utilis comme identifiant (nom de variable) dans toute porte autre que la porte globale. Ceci est une trs mauvaise ide 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 et undefined

Il est possible d'utiliser undefined et les oprateurs stricts pour l'galit et l'ingalit strictes afin de dterminer si une variable a une valeur affecte. Dans le code qui suit, la variable x n'est pas initialise et la premire instruction if sera value true (vrai).

js
let x;
if (x === undefined) {
  // ces instructions seront excutes
} else {
  // ces instructions ne seront pas excutes
}

Note : L'oprateur d'galit stricte doit tre utilis ici plutt que l'oprateur d'galit simple. En effet, x == undefined vrifie galement si x vaut null, tandis que l'galit stricte ne le fait pas. null n'est pas quivalent undefined.

Voir la page sur les oprateurs de comparaison pour plus de dtails.

L'oprateur typeof et undefined

L'oprateur typeof peut galement tre utilis :

js
let x;
if (typeof x === "undefined") {
  // ces instructions seront excutes
}

Une des raisons pour utiliser l'oprateur typeof est qu'il ne renverra pas d'erreur si la variable n'a pas t dfinie :

js
// x n'a pas encore t dfini
if (typeof x === "undefined") {
  // donnera true sans erreur
  // ces instructions seront excutes
}

if (x === undefined) {
  // dclenche une ReferenceError
}

Il existe toutefois une autre alternative. Puisque JavaScript utilise la porte statique, on saura qu'une variable a t dclare si elle est dfinie dans un contexte englobant.

La porte globale est rattache l'objet global, alors on peut vrifier l'existence d'une variable dans le contexte global en examinant la prsence d'une proprit sur l'objet global via l'oprateur in. Par exemple :

js
if ("x" in window) {
  // ces instructions seront excutes uniquement
  // si x est dfini dans la porte globale
}

L'oprateur void et undefined

L'oprateur void est une troisime solution.

js
let x;
if (x === void 0) {
  // ces instructions seront excutes
}

// y n'a pas t dfini avant
if (y === void 0) {
  // dclenche une Uncaught ReferenceError: y is not defined
}

Spcifications

Spcification
ECMAScript 2027 LanguageSpecification
# sec-undefined

Compatibilit des navigateurs

Voir aussi


Web Proxy Viewer  |  New URL  |  Original Page