recursal/MDN huggingface dataset:
Symbol.unscopables
==================

Le symbole connu **`Symbol.unscopables`** est utilisé afin de définir les noms des propriétés propres et héritées qui sont exclues de l'objet lors de l'utilisation de `with` sur l'objet en question.

Exemple interactif
------------------

Description
-----------

Le symbole `@@unscopables` (`Symbol.unscopables`) peut être défini sur n'importe quel objet afin de ne pas exposer certaines propriétés lors des liaisons lexicales avec `with`. Note : en mode strict, l'instruction `with` n'est pas disponible et ce symbole est donc probablement moins nécessaire.

En définissant une propriété comme `true` dans un objet `unscopables`, cela exclura la propriété de la portée lexicale. En définissant une propriété comme `false`, celle-ci pourra faire partie de la portée lexicale et être manipulée dans un bloc `with`.

| Attributs de `Symbol.unscopables` |
| --- |
| Écrivable | Non |
| Énumérable | Non |
| Configurable | Non |

Exemples
--------

Le code qui suit fonctionne bien pour ES5 et les versions antérieures. En revanche, pour ECMAScript 2015 (ES6) et les versions ultérieures où la méthode `Array.prototype.keys()` existe, lorsqu'on utilise un environnement créé avec `with`, `"keys"` serait désormais la méthode et non la variable. C'est là que le symbole natif `@@unscopables` `Array.prototype[@@unscopables]` intervient et empêche d'explorer ces méthodes avec `with`.


```js
var keys = [];

with (Array.prototype) {
  keys.push("something");
}

Object.keys(Array.prototype[Symbol.unscopables]);
// ["copyWithin", "entries", "fill", "find", "findIndex",
// "includes", "keys", "values"]
```


On peut également manipuler `unscopables` sur ses propres objets :


```js
var obj = {
  toto: 1,
  truc: 2,
};

obj[Symbol.unscopables] = {
  toto: false,
  truc: true,
};

with (obj) {
  console.log(toto); // 1
  console.log(truc); // ReferenceError: truc is not defined
}
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-symbol.unscopables |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Array.prototype[@@unscopables]`
* L'instruction `with` (qui n'est pas disponible en mode strict)
Boolean.prototype.valueOf()
===========================

La méthode **`valueOf()`** renvoie la valeur primitive de l'objet `Boolean`.

Exemple interactif
------------------

Syntaxe
-------


```js
bool.valueOf();
```

### Valeur de retour

La valeur primitive associée à l'objet `Boolean`.

Description
-----------

La méthode `valueOf()` de `Boolean` renvoie la valeur primitive d'un objet `Boolean`, ou d'un littéral booléen.

Cette méthode est généralement utilisée de façon interne pas le moteur JavaScript et n'est pas utilisée explicitement dans les scripts.

Exemples
--------

### Utiliser `valueOf()`


```js
var x = new Boolean();
var maVar = x.valueOf(); // assigne false à maVar
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean.prototype.valueof |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Object.prototype.valueOf()`
Constructeur Boolean()
======================

Le **constructeur `Boolean()`** permet de créer des objets `Boolean`.

Exemple interactif
------------------

Syntaxe
-------


```js
new Boolean();
new Boolean(valeur);
```

### Paramètres

`valeur` Facultatif

La valeur initiale de l'objet `Boolean`.

Exemples
--------

### Créer des objets `Boolean` avec une valeur initiale à `false`


```js
const bPasDeParam = new Boolean();
const bZero = new Boolean(0);
const bNull = new Boolean(null);
const bChaineVide = new Boolean("");
const bFalse = new Boolean(false);
```

### Créer des objets `Boolean` avec une valeur initiale à `true`


```js
const bTrue = new Boolean(true);
const bChaineTrue = new Boolean("true");
const bChaineFalse = new Boolean("false");
const bSuLin = new Boolean("Su Lin");
const bArrayProto = new Boolean([]);
const bObjProto = new Boolean({});
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean-constructor |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* La page du glossaire sur les booléens
Boolean.prototype.toString()
============================

La méthode **`toString()`** renvoie une chaine de caractères correspondant à l'objet `Boolean` courant.

Exemple interactif
------------------

Syntaxe
-------


```js
bool.toString();
```

### Valeur de retour

Une chaîne de caractères qui représente l'objet `Boolean`.

Description
-----------

L'objet `Boolean` surcharge la méthode `toString()` de l'objet `Object` ; il n'hérite pas de la méthode `Object.prototype.toString()`. Pour les objets de type `Boolean`, la méthode `toString()` renvoie une chaine de caractère representative de l'objet.

La méthode `toString()` est automatiquement appelée quand le `Boolean` doit être representé comme une texte ou lorsque qu'il est concaténé avec une chaine de caractères.

Pour les objets de type `Boolean` , la fonction native `toString()` renvoie la chaine de caractère "`true`" ou "`false`" en fonction de la valeur de l'objet.

Exemples
--------

### Utiliser `toString()`

Dans ce code, `flag.toString()` renvoie "`true`" :


```js
var flag = new Boolean(true);
var maVar = flag.toString();
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-boolean.prototype.tostring |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Object.prototype.toString()`
Map.prototype[@@iterator]()
===========================

La valeur initiale de la propriété **`@@iterator`** est la même fonction que la valeur initiale de la propriété `entries`.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap[Symbol.iterator];
```

### Valeur de retour

La fonction d'itération (le symbole `@@iterator`) de l'objet, par défaut, c'est la fonction `entries()`.

Exemples
--------

### Utiliser `[@@iterator]()`


```js
var maMap = new Map();
maMap.set("0", "toto");
maMap.set(1, "truc");
maMap.set({}, "bidule");

var mapIter = myMap[Symbol.iterator]();

console.log(mapIter.next().value); // ["0", "toto"]
console.log(mapIter.next().value); // [1, "truc"]
console.log(mapIter.next().value); // [Object, "bidule"]
```

### Utiliser `[@@iterator]()` avec `for..of`


```js
var maMap = new Map();
maMap.set("0", "toto");
maMap.set(1, "truc");
maMap.set({}, "bidule");

for (var v of maMap) {
  console.log(v);
}
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype-@@iterator |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map.prototype.entries()`
* `Map.prototype.keys()`
* `Map.prototype.values()`
Map.prototype.values()
======================

La méthode **`values()`** renvoie un objet `Iterator` qui contient les valeurs de chacun des éléments contenu dans l'objet `Map` donné, dans leur ordre d'insertion.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.values();
```

### Valeur de retour

Un nouvel objet `Iterator` `Map`.

Exemple
-------

### Utiliser `values()`


```js
var maMap = new Map();
maMap.set("0", "toto");
maMap.set(1, "truc");
maMap.set({}, "licorne");

var mapIter = maMap.values();

console.log(mapIter.next().value); // "toto"
console.log(mapIter.next().value); // "truc"
console.log(mapIter.next().value); // "licorne"
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.values |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map.prototype.entries()`
* `Map.prototype.keys()`
Map.prototype.keys()
====================

La méthode **`keys()`** renvoie un objet `Iterator` qui contient les clés de chaque élément de l'objet `Map`, dans leur ordre d'insertion.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.keys();
```

### Valeur de retour

Un nouvel objet `Iterator` `Map`.

Exemples
--------

### Utiliser `keys()`


```js
var maMap = new Map();
maMap.set("0", "toto");
maMap.set(1, "truc");
maMap.set({}, "bidule");

var mapIter = maMap.keys();

console.log(mapIter.next().value); // "0"
console.log(mapIter.next().value); // 1
console.log(mapIter.next().value); // Object
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.keys |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map.prototype.entries()`
* `Map.prototype.values()`
Map.prototype.forEach()
=======================

La méthode **`forEach()`** exécute une fonction donnée sur chaque élément clé-valeur de l'objet `Map` dans l'ordre d'insertion.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.forEach(callback[, thisArg])
```

### Paramètres

`callback`

La fonction à exécuter pour chaque élément.

`thisArg`

La valeur à utiliser comme contexte `this` lors de l'exécution de `callback`.

### Valeur de retour

`undefined`Description
-----------

La méthode `forEach` exécute la fonction `callback` donnée sur chacune des clés qui existe. Elle n'est pas appelée pour les clés qui ont été supprimées. En revanche, elle est appelée pour les valeurs qui sont présentes mais qui sont égales à `undefined`.

`callback` est appelé avec **trois arguments** :

* la **valeur de l'élément**
* la **clé de l'élément**
* l'objet **`Map` parcouru**

Si un argument `thisArg` est fourni à la méthode `forEach`, il sera passé au `callback` quand il sera appelé et celui-ci l'utilisera comme valeur `this`. Dans les autres cas, la valeur `undefined` sera utilisée comme contexte `this`. La valeur `this` observée par la fonction `callback` est déterminée selon les règles appliquées à l'opérateur `this`.

Chacune des valeurs sera traitée une fois sauf si celle-ci a été supprimée puis réajoutée avant la fin de `forEach`. `callback` n'est pas appelé pour les valeurs qui sont supprimés avant le passage de la fonction. Les valeurs qui sont ajoutées avant que `forEach` ait parcouru l'ensemble seront traitées.

`forEach` exécute la fonction `callback` une fois pour chaque élément de l'objet `Map` : il ne renvoie pas de valeur.

Exemples
--------

Le fragment de code suivant enregistre une ligne pour chaque élément d'un objet`Map`:


```js
function logMapElements(valeur, clé, map) {
  console.log(`map.get('${clé}') = ${value}`);
}

new Map([
  ["toto", 3],
  ["truc", {}],
  ["bidule", undefined],
]).forEach(logMapElements);
// affichera dans la console :
// "map.get('toto') = 3"
// "map.get('truc') = [object Object]"
// "map.get('bidule') = undefined"
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.foreach |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Array.prototype.forEach()`
* `Set.prototype.forEach()`
Constructeur Map()
==================

Le **constructeur `Map()`** permet de créer des objets `Map`.

Syntaxe
-------


```js
new Map();
new Map(iterable);
```

### Paramètres

`iterable` Facultatif

Un tableau (`Array`) ou un autre objet itérable dont les éléments sont des clés/valeurs (par exemple des tableaux avec deux éléments comme `[[ 1, 'un' ],[ 2, 'deux' ]]`). Chaque paire de clé/valeur est ajouté au nouvel objet `Map`.

Exemples
--------

### Créer un nouvel objet `Map`


```js
let maMap = new Map([
  [1, "un"],
  [2, "deux"],
  [3, "trois"],
]);
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map-constructor |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* Une prothèse d'émulation pour `Map`, disponible avec la bibliothèque `core-js`
* `Set`
* `WeakMap`
* `WeakSet`
Map.prototype.size
==================

L'accesseur **`size`** est une propriété renvoyant le nombre d'éléments d'un objet `Map`.

Exemple interactif
------------------

Description
-----------

La valeur de `size` est un entier représentant le nombre d'entrées d'un objet `Map`. Le mutateur correspond à cette propriété est `undefined`, on ne peut pas donc pas modifier cette propriété.

Exemple
-------

### Utiliser `size`


```js
var maMap = new Map();
maMap.set("a", "alpha");
maMap.set("b", "beta");
maMap.set("g", "gamma");

maMap.size; // 3
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-map.prototype.size |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
Map.prototype.set()
===================

La méthode **`set()`** ajoute un nouvel élément avec une `clé` et une `valeur` données à un objet `Map`.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.set(clé, valeur);
```

### Paramètres

`clé`

Ce paramètre représente la clé de l'élément à ajouter à l'objet `Map`.

`valeur`

Ce paramètre représente la valeur de l'élément à ajouter à l'objet `Map`.

### Valeur de retour

L'objet `Map` courant (auquel l'élément a été ajouté).

Exemples
--------

### Utiliser la méthode `set()`


```js
var maMap = new Map();

// On ajoute de nouveaux éléments à l'objet map
maMap.set("truc", "toto");
maMap.set(1, "bidule");

// On met à jour un élément
maMap.set("truc", "fuuu");
```

### Utiliser la méthode `set()` avec un enchaînement

La méthode `set()` renvoie le même objet `Map` et on peut donc la « chaîner » pour des opérations successives :


```js
// On ajoute de nouveaux éléments
// en enchaînant les appels à set()
maMap.set("truc", "toto").set(1, "tototruc").set(2, "bidule");
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.set |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
* `Map.prototype.get()`
* `Map.prototype.has()`
Map.prototype.has()
===================

La méthode **`has()`** renvoie un booléen permettant de déterminer si l'objet `Map` en question contient la clé donnée.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.has(clé);
```

### Paramètres

`clé`

Ce paramètre obligatoire correspond à la clé dont on veut savoir si elle appartient à l'objet `Map`.

### Valeur de retour

Cette méthode renvoie un booléen : `true` si un élément avec cette clé existe au sein de l'objet `Map` et `false` sinon.

Exemples
--------


```js
var maMap = new Map();
maMap.set("truc", "toto");

maMap.has("truc"); // renvoie true
maMap.has("machin"); // renvoie false
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.has |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
* `Map.prototype.set()`
* `Map.prototype.get()`
Map.prototype.get()
===================

La méthode **`get()`** renvoie un élément précisé d'un objet `Map`. Si la valeur associée à la clé fournie est un objet, alors on obtient une référence à cet objet et tous changements apporté à cet objet sera aussi visible à l'intérieur de l'objet `Map`.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.get(clé);
```

### Paramètres

`clé`

La clé de l'élément à renvoyer depuis l'objet `Map`.

### Valeur de retour

L'élément associée à la clé donnée ou `undefined` si la clé ne fait pas partie de l'objet `Map`.

Exemples
--------


```js
var maMap = new Map();
maMap.set("truc", "toto");

maMap.get("truc"); // Renvoie "toto".
maMap.get("machin"); // Renvoie undefined.
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.get |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
* `Map.prototype.set()`
* `Map.prototype.has()`
get Map[@@species]
==================

**`Map[@@species]`** renvoie le constructeur `Map`.

Syntaxe
-------


```js
Map[Symbol.species];
```

Description
-----------

L'accesseur `species` renvoie le constructeur par défaut pour les objets `Map`. Les constructeurs des sous-classes peuvent surcharger ce constructeur afin de modifier ce qui est fait lors de la construction de l'objet et son affectation

Exemples
--------

La propriété `species` renvoie la fonction correspondant au constructeur par défaut. Pour les objets `Map`, ce sera le constructeur `Map` :


```js
Map[Symbol.species]; // function Map()
```


Pour des objets dérivés (par exemple un dictionnaire `MaMap` que vous auriez construit), la propriété `species` correspondra au constructeur `MaMap`. Si vous souhaitez surcharger cela pour renvoyer le constructeur parent `Map`, vous pourrez utiliser :


```js
class MaMap extends Map {
  // On surcharge le symbole species de MaMap
  // avec le constructeur Map parent
  static get [Symbol.species]() {
    return Map;
  }
}
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-get-map-@@species |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
* `Symbol.species`
Map.prototype.entries()
=======================

La méthode **`entries()`** renvoie un objet `Iterator` qui contient les paires `[clé, valeur]` pour chaque élément de l'objet `Map`, dans leur ordre d'insertion.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.entries();
```

### Valeur de retour

Un nouvel objet `Iterator` `Map`.

Exemple
-------

### Utiliser `entries()`


```js
var maMap = new Map();
maMap.set("0", "toto");
maMap.set(1, "truc");
maMap.set({}, "bidule");

var mapIter = maMap.entries();

console.log(mapIter.next().value); // ["0", "toto"]
console.log(mapIter.next().value); // [1, "truc"]
console.log(mapIter.next().value); // [Object, "bidule"]
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.entries |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map.prototype.keys()`
* `Map.prototype.values()`
Map.prototype.clear()
=====================

La méthode **`clear()`** supprime tous les éléments d'un objet `Map`.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.clear();
```

### Valeur de retour

`undefined`.

Exemple
-------

### Utiliser la méthode `clear()`


```js
var maMap = new Map();
maMap.set("truc", "bidule");
maMap.set(1, "toto");

maMap.size; // 2
maMap.has("truc"); // true

maMap.clear();

maMap.size; // 0
maMap.has("truc"); // false
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.clear |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
Map.prototype.delete()
======================

La méthode **`delete()`** permet de retirer un élément donné d'un objet `Map` grâce à sa clé.

Exemple interactif
------------------

Syntaxe
-------


```js
maMap.delete(clé);
```

### Paramètres

`clé`

Ce paramètre obligatoire correspond à la clé de l'élément qu'on souhaite retirer de l'objet `Map`.

### Valeur de retour

Un booléen. La méthode renvoie `true` si un élément de l'objet `Map` a bien été retiré ou `false` si l'élément n'existe pas.

Exemples
--------


```js
var maMap = new Map();
maMap.set("truc", "toto");

maMap.delete("truc"); // Renvoie true. La suppression est OK.
maMap.has("truc"); // Renvoie false. "truc" n'est plus présent.
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-map.prototype.delete |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Map`
Constructeur URIError()
=======================

Le constructeur **`URIError()`** permet de créer une erreur lorsqu'une fonction de gestion d'un URI a été utilisée de façon incorrecte.

Syntaxe
-------


```js
new URIError();
new URIError(message);
new URIError(message, fileName);
new URIError(message, fileName, lineNumber);
```

### Paramètres

`message` Facultatif

Une description de l'erreur, compréhensible par un humain.

`fileName` Facultatif

Le nom du fichier qui contient le code ayant déclenché l'exception.

`lineNumber` Facultatif

Le numéro de ligne pour le code ayant déclenché l'exception.

Exemples
--------

### Intercepter une exception `URIError`


```js
try {
  decodeURIComponent("%");
} catch (e) {
  console.log(e instanceof URIError); // true
  console.log(e.message); // "malformed URI sequence"
  console.log(e.name); // "URIError"
  console.log(e.fileName); // "Scratchpad/1"
  console.log(e.lineNumber); // 2
  console.log(e.columnNumber); // 2
  console.log(e.stack); // "@Scratchpad/2:2:3\n"
}
```

### Créer une instance de `URIError`


```js
try {
  throw new URIError("Coucou", "unFichier.js", 10);
} catch (e) {
  console.log(e instanceof URIError); // true
  console.log(e.message); // "Coucou"
  console.log(e.name); // "URIError"
  console.log(e.fileName); // "unFichier.js"
  console.log(e.lineNumber); // 10
  console.log(e.columnNumber); // 0
  console.log(e.stack); // "@Scratchpad/2:2:9\n"
}
```

Spécifications
--------------

| Specification |
| --- |
| ECMAScript Language Specification # sec-nativeerror-constructors |

Compatibilité des navigateurs
-----------------------------

BCD tables only load in the browser with JavaScript enabled. Enable JavaScript to view data.

Voir aussi
----------

* `Error`
* `decodeURI()`
* `decodeURIComponent()`
* `encodeURI()`
* `encodeURIComponent()`