ECMAScript 2019
Numéro de version de JavaScript
Les versions anciennes de JS sont nommées par numéros : ES5 (2009) et ES6 (2015).
Depuis 2016, les versions sont nommées par années : ECMAScript 2016, 2017, 2018, 2019, ...
Nouvelles fonctionnalités de ES2019 :
- String.trimStart()
- String.trimEnd()
- Object.fromEntries
- Liens catch optionnels
- Array.flat()
- Array.flatMap()
- Array.Sort() révisé
- Révision de JSON.stringify()
- Séparateurs autorisés dans les littéraux de chaîne
- Function.toString() révisé
Avis
Ces caractéristiques sont relativement nouvelles.
Les navigateurs plus anciens peuvent nécessiter un code de remplacement (Polyfill)
Méthode de chaîne JavaScript trimStart()
En 2019, ES a ajouté la méthode String trimStart()
.
trimStart()
Le fonctionnement de la méthode est similaire à trim()
De même, mais ne supprime que les espaces au début de la chaîne.
Exemple
let text1 = " Hello World! "; let text2 = text1.trimStart();
Depuis janvier 2020, tous les navigateurs modernes supportent JavaScript String trimStart() :
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
avril 2018 | janvier 2020 | juin 2018 | septembre 2018 | mai 2018 |
Méthode de chaîne JavaScript trimEnd()
ES2019 a ajouté à JavaScript trimEnd()
méthodes de chaîne.
trimEnd()
Le fonctionnement de la méthode est similaire à trim()
De même, mais ne supprime que les espaces à la fin de la chaîne.
Exemple
let text1 = " Hello World! "; let text2 = text1.trimEnd();
Depuis janvier 2020, tous les navigateurs modernes supportent JavaScript String trimEnd() :
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 61 | Safari 12 | Opera 50 |
avril 2018 | janvier 2020 | juin 2018 | septembre 2018 | mai 2018 |
Méthode d'objet JavaScript fromEntries()
ES2019 a ajouté à JavaScript fromEntries()
Méthode d'objet.
fromEntries()
La méthode crée un objet à partir de paires de clés/valeurs itérables.
Exemple
const fruits = [ ["apples", 300], ["pears", 900], ["bananas", 500] ]; const myObj = Object.fromEntries(fruits);
Depuis janvier 2020, tous les navigateurs modernes supportent JavaScript Object fromEntries() :
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 73 | Edge 79 | Firefox 63 | Safari 12.1 | Opera 60 |
mars 2019 | janvier 2020 | octobre 2018 | mars 2019 | avril 2019 |
Liens catch optionnels
Depuis ES2019, si ce n'est pas nécessaire, vous pouvez omettre le paramètre catch :
Exemple
Avant 2019 :
try { // code } catch (err) { // code }
Après 2019 :
try { // code } catch { // code }
Depuis janvier 2020, tous les navigateurs modernes supportent l'optionnel binding catch :
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 66 | Edge 79 | Firefox 58 | Safari 11.1 | Opera 53 |
avril 2018 | janvier 2020 | janvier 2018 | mars 2018 | mai 2018 |
Méthode d'array JavaScript flat()
ES2019 a ajouté à JavaScript flat()
Méthode de tableau.
flat()
La méthode crée un nouveau tableau en aplatisant les tableaux imbriqués.
Exemple
const myArr = [[1,2],[3,4],[5,6]]; const newArr = myArr.flat();
Depuis janvier 2020, tous les navigateurs modernes supportent JavaScript Array flat() :
Chrome | Edge | Firefox | Safari | Opera |
---|---|---|---|---|
Chrome 69 | Edge 79 | Firefox 62 | Safari 12 | Opera 56 |
septembre 2018 | janvier 2020 | septembre 2018 | septembre 2018 | septembre 2018 |
Méthode d'array JavaScript flatMap()
ES2019 a ajouté à JavaScript flatMap()
Méthode de tableau.
flatMap()
La méthode mappe d'abord tous les éléments de l'array, puis crée un nouveau tableau en aplatisant l'array.
Exemple
const myArr = [1, 2, 3, 4, 5, 6]; const newArr = myArr.flatMap((x) => x * 2);
Méthode d'array stable sort()
ES2019 Révisiondu méthode sort() de Array.
Avant 2019, la norme permettait l'utilisation d'algorithmes de tri instables, tels que QuickSort.
Après ES2019, les navigateurs doivent utiliser des algorithmes de tri stables :
Lorsque les éléments sont triés en fonction d'une valeur, ces é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, lorsque le tri est effectué par prix, les résultats ne peuvent pas apparaître dans d'autres positions relatives, comme suit :
X01 100 X03 100 X00 100 X03 100 X05 110 X04 110 X06 110 X07 110
Révision de JSON.stringify()
ES2019 Révisiondu méthode stringify() de JSON.
Avant 2019, JSON ne pouvait pas sérialiser des caractères codé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) retournait des caractères Unicode endommagés, par exemple ���.
Après cette révision, les chaînes de caractères avec des points de code UTF-8 peuvent être converties en toute sécurité en utilisant JSON.stringify() et restaurées en chaînes d'origine en utilisant JSON.parse().
Symbole de séparation
Les caractères de séparation de ligne et de paragraphe sont maintenant autorisés dans les textes de chaîne (\u2028
et \u2029
)。
Avant 2019, ceux-ci étaient considérés comme des caractères de fin de ligne et entraînaient des exceptions d'erreur :
Exemple
// Cela est valide dans ES2019 : let text = "\u2028";
Attention
Maintenant, JavaScript et JSON partagent les mêmes règles.
Avant ES2019 :
text = JSON.parse('"\u2028"') le解析为 ''。
text = '"\u2028"' donneraErreur de syntaxe.
Révision de Function toString()
ES2019 Révisionde la méthode Function toString().
La méthode toString() retourne une chaîne représentant le code source de la fonction.
À partir de 2019, toString() doit retourner le code source de la fonction, y compris les commentaires, les espaces et les détails syntaxiques.
Avant 2019, différents navigateurs retournaient des variantes de fonctions différentes (par exemple, sans commentaires et espaces). À partir de 2019, la fonction doit être retournée intégralement selon la manière dont elle a été écrite.
Exemple
function myFunction(p1, p2) { return p1 * p2; }