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 :

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();

Essayer vous-même

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();

Essayer vous-même

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);

Essayer vous-même

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();

Essayer vous-même

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);

Essayer vous-même

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 }
];

Essayer vous-même

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");

Essayer vous-même

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";

Essayer vous-même

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;
}

Essayer vous-même