recursal/MDN huggingface dataset:
FinalizationRegistry.prototype.register()
=========================================

La méthode `register()` inscrit un objet dans un registre `FinalizationRegistry` afin que, lorsque l'objet est traité par le ramasse-miettes, la fonction de rappel de nettoyage associée puisse être appelée.

Syntaxe
-------


```js
register(cible, valeurTenue);
register(cible, valeurTenue, jetonDesenregistrement);
```

### Paramètres

`cible`

L'objet cible à inscrire au registre.

`valeurTenue`

La valeur à passer au finaliseur pour cet objet. Cette valeur ne peut pas être l'objet `cible`.

`jetonDesenregistrement` Facultatif

Un jeton qui peut être utilisé par la méthode `unregister()` plus tard pour retirer l'objet cible du registre. Si cette valeur est fournie (et est différente de `undefined`), ce doit être un objet. Si cette valeur n'est pas fournie, l'objet cible ne peut pas être retiré du registre.

### Valeur de retour

`undefined`.

Notes
-----

Voir les notes de la page `FinalizationRegistry` à propos d'inconvénients sur l'utilisation de ces outils.

Exemples
--------

### Utiliser register()

La ligne suivante enregistre l'objet `cible` et passe la valeur tenue `"une valeur"` et l'objet cible comme jeton de désenregistrement :


```js
registry.register(cible, "une valeur", cible);
```


La ligne suivante enregistre l'objet `cible` et passe un autre objet comme valeur tenue. L'absence de jeton de désenregistrement indique que `cible` ne peut pas être retiré du registre) :


```js
registry.register(cible, { utile: "info à propos de la cible" });
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-finalization-registry.prototype.register |

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

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

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

* `FinalizationRegistry`
FinalizationRegistry.prototype.unregister()
===========================================

La méthode `unregister()` permet de retirer un objet donné d'un registre `FinalizationRegistry`.

Syntaxe
-------


```js
unregister(jetonDesenregistrement);
```

### Paramètres

`jetonDesenregistrement`

Le jeton utilisé par la méthode `register()` lors de l'enregistrement de l'objet cible.

### Valeur de retour

`undefined`.

Notes
-----

Lorsqu'un objet cible a été récupéré, il ne fait plus partie du registre. Aussi, il n'est pas nécessaire d'utiliser `unregister()` dans les fonctions de rappel de nettoyage. Appelez uniquement `unregister` si vous n'avez pas reçu de fonction de rappel de nettoyage et que vous n'en avez plus besoin.

Exemples
--------

### Utiliser unregister()

Cet exemple illustre l'enregistrement d'un objet en l'utilisant lui-même comme jeton pour le retirer du registre par la suite via `unregister()` :


```js
class Bidule {
  #cleanup = (label) => {
    // ^^^^^−−−−− valeur tenue
    console.error(
      `La méthode \`release\` n'a jamais été appelée pour l'objet avec l'étiquette "${label}"`,
    );
  };
  #registry = new FinalizationRegistry(this.#cleanup);

  /\*\*
 \* Construit une instance `Bidule`. Assurez-vous d'appeler `release`
 \* lorsque vous avez fini de vous en servir.
 \*
 \* @param label Une étiquette pour le `Bidule`.
 \*/
  constructor(label) {
    // vvvvv−−−−− valeur tenue
    this.#registry.register(this, label, this);
    // cible −−−−−^^^^ ^^^^−−−−− jeton de désenregistrement
  }

  /\*\*
 \* Libère les ressources tenues par cette instance de `Bidule` .
 \*/
  release() {
    this.#registry.unregister(this);
    // ^^^^−−−−− jeton de désenregistrement
  }
}
```


Dans l'exemple qui suit, on illustre l'enregistrement en utilisant un autre objet comme jeton de désenregistrement :


```js
class Bidule {
  #cleanup = (label) => {
    // ^^^^^−−−−− valeur tenue
    console.error(
      `La méthode \`release\` n'a jamais été appelée pour \`Bidule\` pour le fichier "${file.name}"`,
    );
  };
  #registry = new FinalizationRegistry(this.#cleanup);

  /\*\*
 \* Construit une instance de `Bidule` pour le fichier donné.
 \* Assurez-vous d'appeler `release` lorsque vous n'en avez plus
 \* besoin.
 \* @param filename Le nom du fichier.
 \*/
  constructor(filename) {
    this.#file = File.open(filename);
    // vvvvv−−−−− valeur tenue
    this.#registry.register(this, label, this.#file);
    // cible −−−−−^^^^ ^^^^^^^^^^−−−−− jeton de désenregistrement
  }

  /\*\*
 \* On libère les ressources tenues par cette instance de `Bidule`.
 \*/
  release() {
    if (this.#file) {
      this.#registry.unregister(this.#file);
      // ^^^^^^^^^^−−−−− jeton de désenregistrement
      File.close(this.#file);
      this.#file = null;
    }
  }
}
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-finalization-registry.prototype.unregister |

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

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

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

* `FinalizationRegistry`
Constructeur ReferenceError()
=============================

Le constructeur **`ReferenceError()`** permet de créer des objets représentant une erreur qui se produit lorsque le code fait référence à une variable qui n'existe pas.

Syntaxe
-------


```js
new ReferenceError();
new ReferenceError(message);
new ReferenceError(message, nomFichier);
new ReferenceError(message, nomFichier, numeroLigne);
```

### Paramètres

`message` Facultatif

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

`nomFichier` Facultatif

Le nom du fichier contenant le code qui a déclenché l'exception.

`numeroLigne` Facultatif

Le numéro de la ligne du code qui a déclenché l'exception.

Exemples
--------

### Intercepter une exception `ReferenceError`


```js
try {
  let a = variableIndefinie;
} catch (e) {
  console.log(e instanceof ReferenceError); // true
  console.log(e.message); // "variableIndefinie is not defined"
  console.log(e.name); // "ReferenceError"
  console.log(e.fileName); // "Scratchpad/1"
  console.log(e.lineNumber); // 2
  console.log(e.columnNumber); // 6
  console.log(e.stack); // "@Scratchpad/2:2:7\n"
}
```

### Créer une exception `ReferenceError`


```js
try {
  throw new ReferenceError("Coucou", "unFichier.js", 10);
} catch (e) {
  console.log(e instanceof ReferenceError); // true
  console.log(e.message); // "Coucou"
  console.log(e.name); // "ReferenceError"
  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`
Constructeur EvalError()
========================

Le **constructeur `EvalError()`** permet de créer un objet représentant une erreur concernant la fonction globale `eval()`. Cette exception n'est plus déclenchée par les moteurs JavaScript désormais, toutefois l'objet `EvalError` reste présent à des fins de compatibilité.

Syntaxe
-------


```js
new EvalError();
new EvalError(message);
new EvalError(message, nomFichier);
new EvalError(message, nomFichier, numeroLigne);
```

### Paramètres

`message` Facultatif

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

`nomFichier` Facultatif

Le nom du fichier contenant le code qui a causé l'exception.

`numeroLigne` Facultatif

Le numéro de la ligne du code qui a causé l'exception.

Exemples
--------

`EvalError` n'est plus utilisé dans la spécification ECMAScript actuelle et ne sera plus déclenchée par les moteurs JavaScript. Toutefois, l'objet reste présent à des fins de rétro-compatibilité avec les versions antérieures de la spécification.

### Créer un objet `EvalError`


```js
try {
  throw new EvalError("Coucou", "unFichier.js", 10);
} catch (e) {
  console.log(e instanceof EvalError); // true
  console.log(e.message); // "Coucou"
  console.log(e.name); // "EvalError"
  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`
* `eval()`
Constructeur SyntaxError()
==========================

Le constructeur **`SyntaxError()`** permet de créer un objet représentant une erreur qui se produit lorsqu'on essaie d'interpréter du code dont la syntaxe est invalide.

Syntaxe
-------


```js
new SyntaxError();
new SyntaxError(message);
new SyntaxError(message, nomFichier);
new SyntaxError(message, nomFichier, numeroLigne);
```

### Paramètres

`message` Facultatif

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

`nomFichier` Facultatif

Le nom du fichier contenant le code qui a déclenché l'exception.

`numeroLigne` Facultatif

Le numéro de la ligne du code qui a déclenché l'exception.

Exemples
--------

### Intercepter une exception `SyntaxError`


```js
try {
  eval("coucou truc");
} catch (e) {
  console.error(e instanceof SyntaxError);
  console.error(e.message);
  console.error(e.name);
  console.error(e.fileName);
  console.error(e.lineNumber);
  console.error(e.columnNumber);
  console.error(e.stack);
}
```

### Créer une exception `SyntaxError`


```js
try {
  throw new SyntaxError("Coucou", "unFichier.js", 10);
} catch (e) {
  console.error(e instanceof SyntaxError); // true
  console.error(e.message); // Coucou
  console.error(e.name); // SyntaxError
  console.error(e.fileName); // unFichier.js
  console.error(e.lineNumber); // 10
  console.error(e.columnNumber); // 0
  console.error(e.stack); // @debugger eval code:3:9
}
```

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`
DataView.prototype.getUint32()
==============================

La méthode **`getUint32()`** permet de lire un entier non-signé sur 32 bits (type *unsigned long* par analogie avec C) à l'octet donné par rapport au début de `DataView`.

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

Syntaxe
-------


```js
dataview.getUint32(positionOctet [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

`littleEndian`

Facultatif indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets de poids faible. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts.

### Valeur de retour

Un entier sur 32 bits, non-signé.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getUint32()`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getUint32(1); // 0
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getuint32 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.setFloat32()
===============================

La méthode **`setFloat32()`** permet d'enregistrer un nombre flottant signé sur 32 bits (type *float* par analogie avec C) à l'octet indiqué par rapport au début de la `DataView`.

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

Syntaxe
-------


```js
dataview.setFloat32(positionOctet, valeur [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.

`valeur`

La valeur à enregistrer

`littleEndian`

Facultatif Indique si la donnée sur 32 bits est enregistrée dans l'ordre des octets de poids faibles. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts.

### Valeur de retour

`undefined`.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue.

Exemples
--------

### Utilisation de la méthode `setFloat32`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.setFloat32(1, 3);
dataview.getFloat32(1); // 3
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.setfloat32 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.setInt16()
=============================

La méthode **`setInt16()`** permet d'enregister un entier signé sur 16 bits (type short par analogie avec C) à l'octet indiqué par rapport au début de la `DataView`.

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

Syntaxe
-------


```js
dataview.setInt16(positionOctet, value [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en numéro d'octet, à partir du début de la vue à laquelle enregistrer la donnée.

`valeur`

La valeur à enregistrer

`littleEndian`

Facultatif Indique si la donnée sur 16 bits est enregistrée dans l'ordre des octets de poids faibles. Si ce paramètre vaut `false` ou `undefined`, l'ordre sera celui des octets de poids forts.

### Valeur de retour

`undefined`.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel que l'enregistrement sera fait en dehors de la vue.

Exemples
--------

### Utilisation de la méthode `setInt16`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.setInt16(1, 3);
dataview.getInt16(1); // 3
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.setint16 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.getUint8()
=============================

La méthode **`getUint8()`** permet de lire un entier non-signé sur 8 bits à l'octet donné par rapport au début de la `DataView`.

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

Syntaxe
-------


```js
dataview.getUint8(positionOctet);
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

### Valeur de retour

Un entier sur 8 bits, non-signé.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getUint8`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getUint8(1); // 0
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getuint8 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.getBigUint64()
=================================

La méthode **`getBigUint64()`** permet de lire un entier non signé sur 64 bits (type *unsigned long long* par analogie avec C) à l'octet donné par rapport au début de `DataView`.

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

Syntaxe
-------


```js
dataview.getBigUint64(positionOctet [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

`littleEndian`

Facultatif indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets de poids faible. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts.

### Valeur de retour

Une valeur `BigInt`

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getBigUint64()`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getBigUint64(0); // 0n
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getbiguint64 |

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

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

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

* `DataView`
* `ArrayBuffer`
* `BigInt`
DataView.prototype.getFloat64()
===============================

La méthode **`getFloat64()`** permet de lire un entier signé sur 64 bits (type *double* par analogie avec C) à l'octet donné par rapport au début de `DataView`.

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

Syntaxe
-------


```js
dataview.getFloat64(positionOctet [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

`littleEndian`

Facultatif indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets de poids faible. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts.

### Valeur de retour

Un nombre flottant signé sur 64 bits.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getFloat64`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getFloat64(0); // 0
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getfloat64 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.getUint16()
==============================

La méthode **`getUint16()`** permet de lire un entier non-signé sur 16 bits (type *unsigned short* par analogie avec C) à l'octet donné par rapport au début de `DataView`.

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

Syntaxe
-------


```js
dataview.getUint16(positionOctet [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

`littleEndian`

Facultatif indique si la valeur sur 16 bits est enregistrée dans l'ordre des octets de poids faible. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts.

### Valeur de retour

Un entier sur 16 bits non signé.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getUint16`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getUint16(1); // 0
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getuint16 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.getFloat32()
===============================

La méthode **`getFloat32()`** permet de lire un nombre flottant signé sur 32 bits à l'octet donné par rapport au début de `DataView`.

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

Syntaxe
-------


```js
dataview.getFloat32(positionOctet [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

`littleEndian`

Facultatif indique si la valeur sur 32 bits est enregistrée dans l'ordre des octets de poids faible. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts.

### Valeur de retour

Un nombre flottant signé, sur 32 bits.

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getFloat32`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getFloat32(1); // 0
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getfloat32 |

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

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

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

* `DataView`
* `ArrayBuffer`
DataView.prototype.getBigInt64()
================================

La méthode **`getBigInt64()`** permet de lire un entier signé sur 64 bits (type *long long* par analogie avec C) à l'octet donné par rapport au début de `DataView`.

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

Syntaxe
-------


```js
dataview.getBigInt64(positionOctet [, littleEndian])
```

### Paramètres

`positionOctet`

La position, exprimée en nombre d'octets depuis le début de la vue, à laquelle lire les données.

`littleEndian`

Facultatif indique si la valeur sur 64 bits est enregistrée dans l'ordre des octets de poids faible. Si le paramètre vaut `false` ou `undefined`, la valeur sera lue dans l'ordre des octets de poids forts.

### Valeur de retour

Une valeur `BigInt`

### Erreurs renvoyées

`RangeError`

Renvoyée si `positionOctet` est tel qu'il est en dehors de la vue.

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

Il n'y a pas de contrainte d'alignement, les valeurs codées sur plusieurs octets peuvent être obtenues depuis n'importe quelle position.

Exemples
--------

### Utilisation de la méthode `getBigInt64()`


```js
var buffer = new ArrayBuffer(8);
var dataview = new DataView(buffer);
dataview.getBigInt64(0); // 0n
```

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

| Specification |
| --- |
| ECMAScript Language Specification # sec-dataview.prototype.getbigint64 |

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

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

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

* `DataView`
* `ArrayBuffer`
* `BigInt`