From 33058f2b292b3a581333bdfb21b8f671898c5060 Mon Sep 17 00:00:00 2001 From: Peter Bengtsson Date: Tue, 8 Dec 2020 14:40:17 -0500 Subject: initial commit --- .../reference/objets_globaux/undefined/index.html | 137 +++++++++++++++++++++ 1 file changed, 137 insertions(+) create mode 100644 files/fr/web/javascript/reference/objets_globaux/undefined/index.html (limited to 'files/fr/web/javascript/reference/objets_globaux/undefined/index.html') diff --git a/files/fr/web/javascript/reference/objets_globaux/undefined/index.html b/files/fr/web/javascript/reference/objets_globaux/undefined/index.html new file mode 100644 index 0000000000..0e9e0a1cdc --- /dev/null +++ b/files/fr/web/javascript/reference/objets_globaux/undefined/index.html @@ -0,0 +1,137 @@ +--- +title: undefined +slug: Web/JavaScript/Reference/Objets_globaux/undefined +tags: + - JavaScript + - Reference +translation_of: Web/JavaScript/Reference/Global_Objects/undefined +--- +
{{jsSidebar("Objects")}}
+ +

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

+ +

{{js_property_attributes(0,0,0)}}

+ +
{{EmbedInteractiveExample("pages/js/globalprops-undefined.html")}}
+ + + +

Syntaxe

+ +
undefined
+ +

Description

+ +

undefined est une propriété 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, 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 type undefined. Une méthode ou instruction renvoie également undefined si la variable à évaluer n'a pas de valeur assignée. Une fonction renvoie undefined si aucune valeur n'a été {{jsxref("Instructions/return", "retournée","",1)}}.

+ +
+

À ne pas faire ! Puisque undefined n'est pas un mot réservé du langage JavaScript, il peut être utilisé comme identifiant (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é.

+ +
// À NE PAS FAIRE
+
+// écrit "toto string" dans la console
+(function() { var undefined = 'toto'; console.log(undefined, typeof undefined); })();
+
+// écrit "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 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 variable x n'est pas initialisée et la première instruction if sera évaluée à true (vrai).

+ +
var x;
+if (x === undefined) {
+   // ces instructions seront exécutées
+}
+if (x !== undefined) {
+   // ces instructions ne seront pas exécutées
+}
+
+ +
+

Note : L'opérateur d'égalité stricte doit être utilisé ici plutôt que l'opérateur d'égalité simple. En effet, x == undefined vérifie é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 {{jsxref("Opérateurs/Opérateurs_de_comparaison","opérateurs de comparaison","",1)}} pour plus de détails.

+
+ +

L'opérateur typeof et undefined

+ +

L'opérateur {{jsxref("Opérateurs/L_opérateur_typeof", "typeof")}} peut également être utilisé :

+ +
var x;
+if (typeof x == 'undefined') {
+   // ces instructions seront exécutées
+}
+
+ +

Une des raisons pour utiliser {{jsxref("Opérateurs/L_opérateur_typeof", "typeof")}} est qu'il ne renverra pas d'erreur si la variable n'a pas été définie :

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

L'opérateur void et undefined

+ +

L'opérateur {{jsxref("Opérateurs/L_opérateur_void", "void")}} est une troisième solution.

+ +
var x;
+if (x === void 0) {
+   // ces instructions seront exécutées
+}
+
+// y n'a pas été défini avant
+if (y === void 0) {
+   // déclenche une ReferenceError: y is not defined
+   // (contrairement à `typeof`)
+}
+
+ +

Spécifications

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
SpécificationÉtatCommentaires
{{SpecName('ES1', '#sec-4.3.9', 'undefined')}}{{Spec2('ES1')}}Définition initiale. Implémentée avec JavaScript 1.3.
{{SpecName('ES5.1', '#sec-15.1.1.3', 'undefined')}}{{Spec2('ES5.1')}} 
{{SpecName('ES6', '#sec-undefined', 'undefined')}}{{Spec2('ES6')}} 
{{SpecName('ESDraft', '#sec-undefined', 'undefined')}}{{Spec2('ESDraft')}} 
+ +

Compatibilité des navigateurs

+ + + +

{{Compat("javascript.builtins.undefined")}}

-- cgit v1.2.3-54-g00ecf