Il existe une procédure standard pour les dernières versions de
Javascript et il y a tout un comité derrière. Dans cet article, je vais parler de qui prend les décisions sur toute nouvelle spécification, quelle est la procédure à
suivre et quelles sont les nouveautés d'
ES2019 .

La spécification de langage qui contrôle JavaScript est appelée
ECMAScript . Il existe un groupe appelé Comité technique
39 [TC39] , qui examine chaque spécification avant son adoption.
Chaque changement se déroule par étapes:
- Étape 0: Idées
- Étape 1: Offres
- Étape 2: Brouillons
- Étape 3: Candidats
- Étape 4: Achèvement / approbation
Une fonction qui atteint l'étape 4 est susceptible de faire partie de la spécification du langage.
Tenez compte de ce qui est ajouté à la spécification conformément à ES2019.
Array.prototype. {Flat, flatMap}
Array.prototype.flat () vous permet de lisser récursivement des tableaux à une profondeur donnée et de renvoyer un nouveau tableau.
Syntaxe:
Array.prototype.flat (profondeur)depth - la valeur par défaut est 1, utilisez
Infinity pour lisser tous les tableaux imbriqués.
const numbers = [1, 2, [3, 4, [5, 6]]]; // Considers default depth of 1 numbers.flat(); > [1, 2, 3, 4, [5, 6]] // With depth of 2 numbers.flat(2); > [1, 2, 3, 4, 5, 6] // Executes two flat operations numbers.flat().flat(); > [1, 2, 3, 4, 5, 6] // Flattens recursively until the array contains no nested arrays numbers.flat(Infinity) > [1, 2, 3, 4, 5, 6]
Array.prototype.flatMap () mappe chaque élément à l'aide d'une fonction de mappage et aligne le résultat sur un nouveau tableau. Ceci est identique à l'opération de
carte , suivi d'une profondeur
plate de 1.
Syntaxe:
Array.prototype.flatMap (rappel)callback: une
fonction qui produit l'élément d'un nouveau tableau.
const numbers = [1, 2, 3]; numbers.map(x => [x * 2]); > [[2], [4], [6]] numbers.flatMap(x => [x * 2]); > [2, 4, 6]
Object.fromEntries
Object.fromEntries fait le contraire d'Object.entries. Il convertit une liste de paires clé-valeur en un objet.
Syntaxe:
Object.fromEntries (itérable)itération: itération en tant qu'objets
Array ou
Map qui implémentent le
protocole itérable .
const records = [['name','Mathew'], ['age', 32]]; const obj = Object.fromEntries(records); > { name: 'Mathew', age: 32} Object.entries(obj); > [['name','Mathew'], ['age', 32]];
String.prototype. {TrimStart, trimEnd}
trimStart () supprime les espaces au début d'une ligne et
trimEnd () supprime les espaces à la fin d'une ligne.
const greeting = ` Hello Javascript! `; greeting.length; > 19 greeting = greeting.trimStart(); > 'Hello Javascript! ' greeting.length; > 18 greeting = 'Hello World! '; greeting.length; > 15 greeting = greeting.trimEnd(); > 'Hello World!' greeting.length; > 12
Reliure à cliquet en option
Avant la nouvelle spécification, il était nécessaire d'avoir une variable d'exception liée à une instruction
catch . ES2019 l'a rendu facultatif.
// Before try { ... } catch(error) { ... } // After try { ... } catch { ... }
Cette fonctionnalité est utile si vous souhaitez ignorer complètement l'erreur.
La meilleure pratique consiste à envisager la gestion des erreurs.Il y a des moments où vous connaissez une erreur possible qui pourrait fonctionner lors de l'exécution des opérations. Et vous pouvez ignorer la gestion des captures.
JSON ⊂ ECMAScript
Les caractères de séparation de ligne (U + 2028) et les caractères de séparation de paragraphe (U + 2029) sont désormais autorisés dans les littéraux de chaîne. Auparavant, ils étaient considérés comme des terminateurs de chaîne et
lançaient des exceptions
SyntaxError .
// Produces invalid string before ES2019 eval('"\u2028"'); // Valid in ES2019 eval('"\u2028"');
JSON.stringify bien formé
Au lieu de points de code de substitution non appariés menant à des unités de code
UTF-16 uniques, ES10 les représente à l'aide de séquences d'échappement JSON.
JSON.stringify('\uD800'); > '" "' JSON.stringify('\uD800'); > '"\\ud800"'
Function.prototype.toString
.toString () renvoie désormais des extraits exacts du code source, y compris les espaces et les commentaires.
function /* a comment */ foo () {} // Previously: foo.toString(); > 'function foo() {}' ^ no comment ^ no space // Now: foo.toString(); > 'function /* comment */ foo () {}'
Symbol.prototype.description
Une propriété en lecture seule qui renvoie une description facultative de l'objet
Symbol :
Symbol('desc').toString(); > "Symbol(desc)" Symbol('desc').description; > "desc" Symbol('').description; > "" Symbol().description; > undefined
Conclusion
Il y a beaucoup d'autres choses intéressantes, telles que les méthodes et champs statiques et privés dans les classes, LegEx RegEx, etc. Il est important pour le développeur de surveiller l'émergence de nouvelles technologies, d'améliorer les anciennes et de l'utiliser dans le travail.
Il sera utile de lire les versions précédentes:
ES2015 ES2016 ES2017 ES2018