aboutsummaryrefslogtreecommitdiff
path: root/files/fr/web/javascript
diff options
context:
space:
mode:
authoryann2084 <y.vernette@gmail.com>2021-10-15 09:16:06 +0200
committerGitHub <noreply@github.com>2021-10-15 09:16:06 +0200
commitd311670f69df8e4037494a8787aa5a85b5abf5ae (patch)
tree2a2f1254b12b1e6c933a080d0359237a2ca54856 /files/fr/web/javascript
parent316e3292df3b1a55e2eda64a4ba8c006a30686a2 (diff)
downloadtranslated-content-d311670f69df8e4037494a8787aa5a85b5abf5ae.tar.gz
translated-content-d311670f69df8e4037494a8787aa5a85b5abf5ae.tar.bz2
translated-content-d311670f69df8e4037494a8787aa5a85b5abf5ae.zip
Fix typo in code sample for JS Ref typeof page (#2732)
* Update index.md * complementary edit to update content vs en-US counterpart Co-authored-by: julieng <julien.gattelier@gmail.com>
Diffstat (limited to 'files/fr/web/javascript')
-rw-r--r--files/fr/web/javascript/reference/operators/typeof/index.md104
1 files changed, 52 insertions, 52 deletions
diff --git a/files/fr/web/javascript/reference/operators/typeof/index.md b/files/fr/web/javascript/reference/operators/typeof/index.md
index d31c1d7b6b..646f753ef8 100644
--- a/files/fr/web/javascript/reference/operators/typeof/index.md
+++ b/files/fr/web/javascript/reference/operators/typeof/index.md
@@ -1,12 +1,9 @@
---
title: L'opérateur typeof
slug: Web/JavaScript/Reference/Operators/typeof
-tags:
- - JavaScript
- - Operator
- - Reference
translation_of: Web/JavaScript/Reference/Operators/typeof
original_slug: Web/JavaScript/Reference/Opérateurs/L_opérateur_typeof
+browser-compat: javascript.operators.typeof
---
{{jsSidebar("Operators")}}
@@ -16,33 +13,38 @@ L'opérateur **`typeof`** renvoie une chaîne qui indique le type de son opéran
## Syntaxe
-L'opérateur `typeof` est suivi de son opérande :
+L'opérateur `typeof` est suivi de son opérande&nbsp;:
- typeof operande
+```js
+typeof operande
+typeof(operande)
+```
### Paramètre
-`operande` est une expression qui représente la valeur dont on souhaite obtenir le type.
+- `operande`
+ - : Une expression représentant l'objet ou la valeur [primitive](/fr/docs/Glossary/Primitive) dont on souhaite obtenir le type.
## Description
-Le tableau qui suit liste les résultats possibles de l'opérateur `typeof`. Pour plus d'informations sur les types et valeurs primitives en JavaScript, voir la page sur [les types et structures de données JavaScript](/fr/docs/Web/JavaScript/Structures_de_données#Les_valeurs_primitives).
-
-| Type | Résultat |
-| -------------------------------------------------------------------------------- | ------------------------------------------- |
-| indéfini | `"undefined"` |
-| nul | `"object" `(voir ci-après) |
-| booléen | `"boolean"` |
-| nombre | `"number"` |
-| grand entier | `"bigint"` |
-| chaîne de caractère | `"string"` |
-| symbole (nouveauté d'ECMAScript 6 / 2015) | `"symbol"` |
-| objet de l'environnement (fourni par l'environnement dans lequel est utilisé JS) | _Résultat différent selon l'implémentation_ |
-| Objet Function (au sens ECMA-262, un objet qui implémente [[Call]]) | `"function"` |
-| Tout autre objet | `"object"` |
+Le tableau qui suit liste les résultats possibles de l'opérateur `typeof`. Pour plus d'informations sur les types et valeurs primitives en JavaScript, voir la page sur [les types et structures de données JavaScript](/fr/docs/Web/JavaScript/Data_structures).
+
+| Type | Résultat |
+| ------------------------------------------------------------------------------------------------- | -------------------------- |
+| [indéfini](/fr/docs/Glossary/undefined) | `"undefined"` |
+| [nul](/fr/docs/Glossary/Null) | `"object" `(voir ci-après) |
+| [booléen](/fr/docs/Glossary/Boolean) | `"boolean"` |
+| [nombre](/fr/docs/Glossary/Number) | `"number"` |
+| [grand entier (nouveauté d'ECMAScript 2020)](/fr/docs/Glossary/BigInt) | `"bigint"` |
+| [chaîne de caractère](/fr/docs/Glossary/String) | `"string"` |
+| [symbole (nouveauté d'ECMAScript 6 / 2015)](/fr/docs/Glossary/Symbol) | `"symbol"` |
+| [objet Function (au sens ECMA-262, un objet qui implémente [[Call]])](/fr/docs/Glossary/Function) | `"function"` |
+| Tout autre objet | `"object"` |
## Exemples
+### Usage simple
+
```js
// Pour les nombres
typeof 37 === 'number';
@@ -52,6 +54,8 @@ typeof Math.LN2 === 'number';
typeof Infinity === 'number';
typeof NaN === 'number'; // Bien que littéralement ce soit "Not-A-Number"…
typeof Number('1') === 'number'; // Number essaie de convertir l'argument en nombre
+typeof Number('chaussure') === 'number'; // cela vaut également pour les valeurs qui ne peuvent pas être converties
+
// Grand entier
typeof 42n === 'bigint';
@@ -59,28 +63,26 @@ typeof 42n === 'bigint';
// Les chaînes de caractères
typeof "" === 'string';
typeof "bla" === 'string';
+typeof `gabarit de chaîne` === 'string';
typeof "1" === 'string'; // on a ici un nombre écrit sous forme d'une chaîne
typeof (typeof 1) === 'string'; // typeof renvoie toujours une chaîne
typeof String(1) === 'string'; // String convertit n'importe quelle valeur en chaîne
-
// Les booléens
typeof true === 'boolean';
typeof false === 'boolean';
typeof Boolean(1) === 'boolean'; // Boolean convertit n'importe quelle valeur en son équivalent logique
typeof !!(1) === 'boolean'; // deux appels à l'opérateur ! (le NON logique) sont équivalents à Boolean()
-
// Les symboles
typeof Symbol() === 'symbol'
-typeof Symbol('foo') === 'symbol'
+typeof Symbol('toto') === 'symbol'
typeof Symbol.iterator === 'symbol'
-
// Indéfini
typeof undefined === 'undefined';
-typeof blabla === 'undefined'; // pour une variable indéfinie
-
+typeof variableDeclareeMaisIndefinie === 'undefined';
+typeof variableNonDeclaree === 'undefined';
// Les objets
typeof {a:1} === 'object';
@@ -105,9 +107,7 @@ typeof class C {} === 'function';
typeof Math.sin === 'function';
```
-## Informations supplémentaires
-
-### `null`
+### `typeof null`
```js
// Cela est valable depuis les commencements de JavaScript
@@ -116,22 +116,22 @@ typeof null === 'object';
Lors de la première implémentation de JavaScript, les valeurs JavaScript étaient représentées avec une étiquette de type et une valeur. Pour les objets, l'étiquette de type était 0. `null` était représenté par la valeur NULL (0x00 pour la plupart des plates-formes). Par conséquent, l'étiquette de type de `null` valait 0, d'où le comportement de `typeof` ([source](https://www.2ality.com/2013/10/typeof-null.html)).
-Un correctif fut proposé pour ECMAScript mais il fut [refusé](https://web.archive.org/web/20160331031419/http://wiki.ecmascript.org:80/doku.php?id=harmony:typeof_null). Avec cette version, on aurait eu `typeof null === 'null'`.
+Un correctif fut proposé pour ECMAScript, mais il fut [refusé](https://web.archive.org/web/20160331031419/http://wiki.ecmascript.org:80/doku.php?id=harmony:typeof_null). Avec cette version, on aurait eu `typeof null === 'null'`.
### Utiliser l'opérateur `new`
```js
// Tous les constructeurs doivent être employés
// avec le mot-clé "new"
-var maChaine = new String("toto");
-var monNombre = new Number(100);
+let maChaine = new String("toto");
+let monNombre = new Number(100);
typeof maChaine; // renverra "object"
typeof monNombre; // renverra "object"
// En revanche avec le constructeur Function,
// on aura :
-var maFonction = new Function();
+let maFonction = new Function();
typeof maFonction; // renverra "function"
```
@@ -142,10 +142,10 @@ typeof maFonction; // renverra "function"
// déterminer le type de données d'une expression
// complète
-var maDonnee = 99;
+let maDonnee = 99;
-typeof maDonnee + 'Toto'; // renverra 'number Toto'
-typeof (maDonnee + 'Toto'); // renverra 'string'
+typeof maDonnee + ' Toto'; // renverra 'number Toto'
+typeof (maDonnee + ' Toto'); // renverra 'string'
```
### Expressions rationnelles
@@ -157,11 +157,11 @@ typeof /s/ === 'function'; // Chrome 1 à 12 : Non conforme à ECMAScript 5.1
typeof /s/ === 'object'; // À partir de Firefox 5 : Conforme à ECMAScript 5.1
```
-### Zone morte temporaire (_Temporal Dead Zone_ / TDZ)
+### Erreurs et zone morte temporaire (_Temporal Dead Zone_ / TDZ)
Avant ECMAScript 2015 (ES6), `typeof` retournait toujours une chaîne de caractères, quel que soit l'opérande utilisé. On ne pouvait pas avoir d'erreur en utilisant `typeof`.
-Avec l'apparition des opérateurs [`let`](/fr/docs/Web/JavaScript/Reference/Instructions/let) et [`const`](/fr/docs/Web/JavaScript/Reference/Instructions/const), si on utilise `typeof` sur des variables déclarées avec ces opérateurs (ou avec une classe) avant leur déclaration, cela déclenchera une erreur {{jsxref("ReferenceError")}}. Si on utilise `typeof` sur une variable déclarée avec `var` avant la déclaration, cela renverra `undefined`. Les variables déclarées avec `let` et `const` sont en fait placées dans une *[zone morte temporaire ](</fr/docs/Web/JavaScript/Reference/Instructions/let#Zone_morte_temporaire_(Temporal_Dead_Zone_TDZ)_et_les_erreurs_liées_à_let>)*entre le début du bloc et leur initialisation et dans cette zone, tout accès à la variable produit une erreur.
+Avec l'apparition des opérateurs [`let`](/fr/docs/Web/JavaScript/Reference/Statements/let) et [`const`](/fr/docs/Web/JavaScript/Reference/Statements/const), si on utilise `typeof` sur des variables déclarées avec ces opérateurs (ou avec une classe) avant leur déclaration, cela déclenchera une erreur [`ReferenceError`](/fr/docs/Web/JavaScript/Reference/Global_Objects/ReferenceError). Si on utilise `typeof` sur une variable déclarée avec `var` avant la déclaration, cela renverra `undefined`. Les variables déclarées avec `let` et `const` sont en fait placées dans une *[zone morte temporaire ](/fr/docs/Web/JavaScript/Reference/Statements/let)*entre le début du bloc et leur initialisation et dans cette zone, tout accès à la variable produit une erreur.
```js
typeof variableGlobaleNonDeclaree === "undefined";
@@ -178,27 +178,20 @@ class maClasse{};
### Exceptions
-Tous les navigateurs actuels exposent un objet non-standard {{domxref("document.all")}} dont le type est `"undefined"`.
+Tous les navigateurs actuels exposent un objet non-standard [`document.all`](/fr/docs/Web/API/document/all) dont le type est `undefined`.
```js
typeof document.all === "undefined";
```
-Bien que la spécification requière que les objets exostiques aient des types différents, ces types doivent être des chaînes différentes des chaînes existantes pour les objets standards. À ce titre, le type de `document.all` représente une violation « volontaire » du standard ECMAScript original.
+Bien que la spécification requière que les objets exotiques aient des types différents, ces types doivent être des chaînes différentes des chaînes existantes pour les objets standards. À ce titre, le type de `document.all` représente une violation « volontaire » du standard ECMAScript original.
## Spécifications
-| Spécification | État | Commentaires |
-| -------------------------------------------------------------------------------------------- | ---------------------------- | ----------------------------------------------------- |
-| {{SpecName('ESDraft', '#sec-typeof-operator', 'Opérateur typeof')}} | {{Spec2('ESDraft')}} | |
-| {{SpecName('ES6', '#sec-typeof-operator', 'Opérateur typeof')}} | {{Spec2('ES6')}} | |
-| {{SpecName('ES5.1', '#sec-11.4.3', 'Opérateur typeof')}} | {{Spec2('ES5.1')}} | |
-| {{SpecName('ES3', '#sec-11.4.3', 'Opérateur typeof')}} | {{Spec2('ES3')}} | |
-| {{SpecName('ES1', '#sec-11.4.3', 'Opérateur typeof')}} | {{Spec2('ES1')}} | Définition initiale, implémentée avec JavaScript 1.1. |
-
+{{Specifications}}
## Compatibilité des navigateurs
-{{Compat("javascript.operators.typeof")}}
+{{Compat}}
## Notes spécifiques à IE
@@ -208,8 +201,15 @@ Pour les versions 6, 7 et 8 d'Internet Explorer, les objets de l'environnement h
typeof alert === 'object'
```
+Certaines propriétés non-standard d'IE renvoient d'autres valeurs ([tc39/ecma262#1440
+(commentaire)](https://github.com/tc39/ecma262/issues/1440#issuecomment-461963872)):
+
+```js
+typeof window.external.AddSearchProvider === "unknown";
+typeof window.external.IsSearchProviderInstalled === "unknown";
+```
+
## Voir aussi
-- L'opérateur {{jsxref("Opérateurs/instanceof","instanceof")}}
-- [Discussion es-discuss sur l'évolution de `typeof` avec ECMAScript 2015 et `let`](http://es-discourse.com/t/why-typeof-is-no-longer-safe/15)
+- L'opérateur [`instanceof`](/fr/docs/Web/JavaScript/Reference/Operators/instanceof)
- [À propos du non-respect volontaire du standard avec le type de `document.all`](https://github.com/tc39/ecma262/issues/668)