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();
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();
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); 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();
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]); 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 }
]; 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"); 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"; 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();