ECMAScript 2026
Nouvelles fonctionnalités de JavaScript 2026
| Fonctionnalité | Description |
|---|---|
| Error.isError() | Vérifie si une valeur est un objet Error |
| Array.fromAsync() | Copie des éléments d'itérables asynchrones dans un nouveau tableau |
| Le mot-clé using | Déclare des variables à portée de bloc qui sont disposées de manière synchrone |
| await using | Nettoyage automatique des ressources |
| Uint8Array fromBase64() | Crée un objet Uint8Array à partir d'une chaîne encodée en base64 |
| Uint8Array toBase64() | Renvoie une chaîne encodée en base64 à partir des données d'un int8Array |
| Uint8Array fromHex() | Crée un objet Uint8Array à partir d'une chaîne hexadécimale |
| Uint8Array toHex() | Renvoie une chaîne encodée en hexadécimal à partir des données d'un int8Array |
Avertissement
L'édition 2026 n'est pas encore publiée. Elle est normalement prévue pour juin.
À partir de novembre 2025, voici une liste des fonctionnalités dans le brouillon, qui devraient figurer dans l'ES2026.
Error.isError()
La méthode statique Error.isError() vérifie si une valeur est un objet Error.
Exemple
Error.isError(new TypeError()); // true
Error.isError({ name: "Error" }); // false
Error.isError() est une alternative sûre à instanceof Error qui échoue à travers les contextes.
Vérification d'erreur sécurisée pour les contextes :
Une erreur provenant d'un iframe est vérifiée avec Error.isError() et échoue avec instanceof .
Support des navigateurs
Error.isError() est déjà pris en charge dans de nombreux navigateurs :
| Chrome 134 | Edge 134 | Firefox 138 | Safari ❌ | Opera 119 |
| Mar 2025 | Mar 2025 | Avr 2025 | ❌ | Mai 2025 |
Array.fromAsync()
Exemple
async function* asyncGenerator() {
yield Promise.resolve(1);
yield Promise.resolve(2);
yield Promise.resolve(3);
}
async function processAsyncData() {
const arr = await Array.fromAsync(asyncGenerator());
}
processAsyncData();
Support des navigateurs
Array.fromAsync() est déjà pris en charge dans de nombreux navigateurs :
| Chrome 121 | Edge 121 | Firefox 115 | Safari 16.4 | Opera ❌ |
| Jan 2024 | Jan 2024 | Juil 2023 | Mai 2023 | ❌ |
Uint8Array to/fromBase64()
Exemples
let string = 'formation-ti.org 123';
const arr = Uint8Array.fromBase64(string); const arr = new Uint8Array([91,116,156,134,138,37,179,93,183]);
let text = arr.toBase64(); Support des navigateurs
to/fromBase64() est déjà pris en charge dans de nombreux navigateurs :
| Chrome 140 | Edge 140 | Firefox 133 | Safari 18.2 | Opera ❌ |
| Sep 2025 | Sep 2025 | Nov 2024 | Des 2024 | ❌ |
Uint8Array to/fromHex()
Exemples
let text = '5b749c868a25b35db7';
const arr = Uint8Array.fromHex(text); const arr = new Uint8Array([91,116,156,134,138,37,179,93,183]);
let text = arr.toHex(); Support des navigateurs
to/fromHex() est déjà pris en charge dans de nombreux navigateurs :
| Chrome 140 | Edge 140 | Firefox 133 | Safari 18.2 | Opera ❌ |
| Sep 2025 | Sep 2025 | Nov 2024 | Des 2024 | ❌ |
Gestion explicite des ressources
Le mot-clé using
Le mot-clé using est un ajout à JavaScript 2026. Il fournit un mécanisme pour gérer les ressources qui nécessitent une élimination explicite.
Il déclare une variable à portée de bloc , similaire à const , mais avec la différence qu'il garantit l'élimination synchrone de la ressource utilisée lorsque la variable sort de la portée.
Exemple
class MyResource {
constructor(name) {
this.name = name;
myDisplay(`Ressource ${this.name} acquise.`);
}
[Symbol.dispose]() {
myDisplay(`Ressource ${this.name} éliminée.`);
}
}
function manageResource() {
using resource = new MyResource("Connexion à la base de données");
// Utilisez la ressource ici
myDisplay(`Utilisation de la ressource : ${resource.name}`);
}
Le mot-clé using simplifie la gestion des ressources en gérant automatiquement le processus de nettoyage, réduisant le risque de fuites de ressources et améliorant la lisibilité du code par rapport aux blocs manuels try...finally pour l'élimination.
-
Gestion des ressources
usingest conçu pour les objets qui implémentent la méthodeSymbol.dispose, qui définit la logique de nettoyage pour la ressource. -
Élimination synchrone
Lorsqu'une variable déclarée avecusingsort de sa portée (à la fin d'un bloc ou d'une fonction), sa méthodeSymbol.disposeest automatiquement appelée. -
Élimination asynchrone
Pour les ressources nécessitant un nettoyage asynchrone, la déclarationawait usingpeut être utilisée. Cela garantit que le processus d'élimination est attendu avant que la variable ne sorte complètement de la portée. -
Portée de bloc
Commeconst, les variables déclarées avecusingsont locales au bloc dans lequel elles sont déclarées et doivent être initialisées au moment de la déclaration. -
Immutable
Comme pourconst, les variables déclarées avecusingne peuvent pas être réaffectées après l'initialisation.
Support des navigateurs
using est déjà pris en charge dans de nombreux navigateurs :
| Chrome 134 | Edge 134 | Firefox 141 | Safari ❌ | Opera 119 |
| Mar 2025 | Mar 2025 | Juil 2025 | ❌ | Mai 2025 |
Gestion explicite des ressources
await using
Inspiré par d'autres langages, JavaScript 2026 introduit des blocs using pour le nettoyage automatique des ressources telles que les poignées de fichiers, les connexions à des bases de données ou les flux réseau.
Cela est particulièrement bénéfique pour les opérations asynchrones :
Exemple
async function processFile() {
using fileHandle = await openFile('data.txt');
// Travaillez avec fileHandle ici
} // fileHandle est automatiquement fermé ici
Support des navigateurs
await using est déjà pris en charge dans de nombreux navigateurs :
| Chrome 134 | Edge 134 | Firefox 141 | Safari ❌ | Opera 119 |
| Mar 2025 | Mar 2025 | Juil 2025 | ❌ | Mai 2025 |