ECMAScript 2019


Nouvelles fonctionnalités en JavaScript 2019

Fonctionnalité Description
String trimStart() Supprime les espaces au début d'une chaîne
String trimEnd() Supprime les espaces à la fin d'une chaîne
Object.fromEntries Crée un objet à partir de paires clé/valeur
Liaison de catch optionnelle Permet d'omettre le paramètre catch s'il n'est pas nécessaire
Array flat() Crée un nouveau tableau en aplatissant un tableau imbriqué
Array flatMap() Mappe tous les éléments du tableau et crée un nouveau tableau en aplatissant le tableau
Tri révisé de Array sort() Les navigateurs doivent désormais utiliser un algorithme de tri stable
JSON.stringify() révisé Les chaînes avec des points de code UTF-8 se convertissent désormais en toute sécurité
Symboles de séparateur dans les chaînes Les séparateurs de ligne et de paragraphe (\u2028 et \u2029) sont désormais autorisés dans les chaînes
Function.toString() révisé Renvoie désormais le code source, y compris les commentaires, les espaces et les détails de syntaxe

Support des navigateurs

ECMAScript 2019 est pris en charge dans tous les navigateurs modernes depuis janvier 2020 :

Chrome
66
Edge
79
Firefox
61
Safari
12
Opera
50
Avr 2018 Jan 2020 Juin 2018 Sep 2018 Mai 2018

JavaScript String trimStart()

ES2019 a ajouté la méthode String trimStart() à JavaScript.

La méthode trimStart() fonctionne comme trim() , mais supprime les espaces uniquement au début d'une chaîne.

Exemple

let text1 = " Hello World! ";
let text2 = text1.trimStart();
Essayez-le vous-même »

JavaScript String trimEnd()

ES2019 a ajouté la méthode String trimEnd() à JavaScript.

La méthode trimEnd() fonctionne comme trim() , mais supprime les espaces uniquement à la fin d'une chaîne.

Exemple

let text1 = " Hello World! ";
let text2 = text1.trimEnd();
Essayez-le vous-même »

JavaScript Object fromEntries()

ES2019 a ajouté la méthode Object fromEntries() à JavaScript.

La méthode fromEntries() crée un objet à partir de paires clé/valeur itérables.

Exemple

const fruits = [
["apples", 300],
["pears", 900],
["bananas", 500]
];

const myObj = Object.fromEntries(fruits);
Essayez-le vous-même »


Liaison de catch optionnelle

Depuis ES2019, vous pouvez omettre le paramètre catch si vous n'en avez pas besoin :

Exemple

Avant 2019 :

try {
// code
} catch (err) {
// code
}

Après 2019 :

try {
// code
} catch {
// code
}

JavaScript Array flat()

ES2019 a ajouté la méthode Array flat() à JavaScript.

La méthode flat() crée un nouveau tableau en aplatissant un tableau imbriqué.

Exemple

const myArr = [[1,2],[3,4],[5,6]];
const newArr = myArr.flat();
Essayez-le vous-même »

JavaScript Array flatMap()

ES2019 a ajouté la méthode Array flatMap() à JavaScript.

La méthode flatMap() mappe d'abord tous les éléments d'un tableau, puis crée un nouveau tableau en aplatissant le tableau.

Exemple

const myArr = [1, 2, 3, 4, 5, 6];
const newArr = myArr.flatMap(x => [x, x * 10]);
Essayez-le vous-même »

Tri stable de Array sort()

ES2019 a révisé la méthode Array sort() .

Avant 2019, la spécification permettait des algorithmes de tri instables tels que QuickSort.

Après ES2019, les navigateurs doivent utiliser un algorithme de tri stable :

Lors du tri des éléments sur une valeur, les éléments doivent conserver leur position relative par rapport aux autres éléments ayant la même valeur.

Exemple

const myArr = [
{name:"X00",price:100 },
{name:"X01",price:100 },
{name:"X02",price:100 },
{name:"X03",price:100 },
{name:"X04",price:110 },
{name:"X05",price:110 },
{name:"X06",price:110 },
{name:"X07",price:110 }
];
Essayez-le vous-même »

Dans l'exemple ci-dessus, lors du tri par prix, le résultat ne doit pas avoir de noms dans une position relative différente, comme ceci :

X01 100
X03 100
X00 100
X03 100
X05 110
X04 110
X06 110
X07 110

JSON.stringify() révisé

ES2019 a révisé la méthode JSON stringify() .

Avant 2019, JSON ne pouvait pas convertir en chaîne des caractères encodés avec \.

Exemple

let text = JSON.stringify("\u26D4");
Essayez-le vous-même »

Avant ES2019, l'utilisation de JSON.stringify() sur des points de code UTF-8 (U+D800 à U+DFFF) renvoyait des caractères Unicode cassés comme ���.

Après cette révision, les chaînes avec des points de code UTF-8 se convertissent en toute sécurité avec JSON.stringify() , et reviennent à l'original en utilisant JSON.parse() .


Symboles de séparateur

Les séparateurs de ligne et les symboles de séparateur de paragraphe (\u2028 et \u2029) sont désormais autorisés dans les littéraux de chaîne.

Avant 2019, ceux-ci étaient traités comme des terminaisons de ligne et entraînaient des exceptions d'erreur :

Exemple

// Ceci est valide en ES2019 :
let text = "\u2028";
Essayez-le vous-même »

Remarque

Maintenant, JavaScript et JSON ont des règles égales.

Avant ES2019 :

text = JSON.parse('"\u2028"') se parserait en ''.

text = '"\u2028"' donnerait erreur de syntaxe .


Function toString() révisé

ES2019 a révisé la méthode Function toString() .

La méthode toString() renvoie une chaîne représentant le code source d'une fonction.

À partir de 2019, toString() doit renvoyer le code source de la fonction, y compris les commentaires, les espaces et les détails de syntaxe.

Avant 2019, différents navigateurs renvoyaient différentes variantes de la fonction (comme sans commentaires et espaces). À partir de 2019, la fonction doit être renvoyée exactement telle qu'elle est écrite.

Exemple

function myFunction(p1, p2) {
return p1 * p2;
}
let text = myFunction.toString();
Essayez-le vous-même »