Articles

ECMAScript (Français)

La spécification ECMAScript est une spécification standardisée d’un langage de script développé par Brendan Eich de Netscape; initialement nommé Mocha, puis LiveScript, et enfin JavaScript. En décembre 1995, Sun Microsystems et Netscape ont annoncé JavaScript dans un communiqué de presse. En novembre 1996, Netscape a annoncé une réunion de L’Organisation Internationale de normalisation Ecma pour faire progresser la normalisation de JavaScript. La première édition de L’ECMA-262 a été adoptée par l’Assemblée générale de L’Ecma en juin 1997. Plusieurs éditions de la norme linguistique ont été publiées depuis., Le nom « ECMAScript » était un compromis entre les organisations impliquées dans la normalisation du langage, en particulier Netscape et Microsoft, dont les différends ont dominé les premières sessions de normalisation. Eich a commenté que  » ECMAScript a toujours été un nom commercial indésirable qui ressemble à une maladie de la peau. »ECMAScript a été formalisé par des travaux de sémantique opérationnelle à L’Université de Stanford et au Département D’informatique de L’Imperial College de Londres pour l’analyse et la normalisation de la sécurité.,

JavaScript et JScript sont tous deux conformes à la spécification ECMAScript tout en fournissant des fonctionnalités supplémentaires non décrites dans la spécification.

Versionsmodifier

Il existe onze éditions de L’ECMA-262 publiées. Les travaux sur la version 11 de la norme ont été finalisés en juin 2020.,

n ce qui concerne le JavaScript, il convient de noter que le JavaScript est toujours le même que celui de l’ECMAScript 2020 (es2020)

ECMAScript version de l’histoire
Edition Date de publication Nom Changements d’avant edition Éditeur
1 juin 1997 Première édition Guy L. Steele Jr,998 modifications rédactionnelles pour maintenir la spécification entièrement alignée sur la norme internationale ISO/IEC 16262 Mike Cowlishaw
3 décembre 1999 ajout d’expressions régulières, meilleure gestion des chaînes, nouvelles instructions de contrôle, gestion des exceptions try/catch, définition plus stricte des erreurs, formatage des sorties numériques et autres améliorations Mike cowlishaw
4 abandonné (dernière ébauche le 30 juin 2003) la quatrième édition a été abandonnée en raison de divergences politiques concernant la complexité de la langue., De nombreuses fonctionnalités proposées pour la quatrième édition ont été complètement abandonnées; certaines ont été intégrées à la sixième édition.
5 décembre 2009 Ajoute « mode strict, » un sous-ensemble destiné à fournir plus approfondie de vérification d’erreur et d’éviter les erreurs de constructions. Clarifie de nombreuses ambiguïtés dans la spécification de la 3ème édition et prend en compte le comportement des implémentations du monde réel qui différaient systématiquement de cette spécification., Ajoute de nouvelles fonctionnalités, telles que les getters et setters, la prise en charge de la bibliothèque pour JSON et une réflexion plus complète sur les propriétés de l’objet. Pratap Lakshman, Allen Wirfs-Brock
5.1 juin 2011 Cette édition 5.1 du standard ECMAScript est parfaitement aligné avec la troisième édition de la norme internationale ISO/IEC 16262:2011., voir la 9e édition – ECMAScript 2018 Brian Terlson
10 juin 2019 ECMAScript 2019 (ES2019) voir la 10e édition – ECMAScript 2019 Brian Terlson, Bradley Farias, Jordan Harband
voir la 11e édition – ECMAScript 2020 Jordan harband, Kevin Smith

en juin 2004, Ecma International a publié la norme ECMA-357, définissant une extension D’ECMAScript, connue sous le nom d’ECMAScript for XML (E4X)., Ecma a également défini un » profil Compact  » pour ECMAScript – connu sous le nom ES-CP, ou ECMA 327 – qui a été conçu pour les périphériques à ressources limitées, qui a été retiré en 2015.

4ème édition (abandonnée)Edit

la quatrième édition proposée D’ECMA-262 (ECMAScript 4 ou ES4) aurait été la première mise à jour majeure D’ECMAScript depuis la publication de la troisième édition en 1999. La spécification (ainsi qu’une mise en œuvre de référence) devait initialement être achevée en octobre 2008. Le premier projet datait de février 1999., Un aperçu de la langue a été publié par le groupe de travail le 23 octobre 2007.

en août 2008, la proposition de la 4ème édition D’ECMAScript avait été réduite en un projet portant le nom de code ECMAScript Harmony. Les caractéristiques en discussion pour Harmony à l’époque comprenaient:

  • classes,
  • Un système de modules,
  • annotations de type optionnelles et typage statique, probablement en utilisant un système de type structurel,
  • générateurs et itérateurs,
  • affectation de déstructuration et
  • types de données algébriques.,

l’intention de ces fonctionnalités était en partie de mieux prendre en charge la programmation au sens large, et de permettre de sacrifier une partie de la capacité du script à être dynamique pour améliorer les performances. Par exemple, Tamarin – La machine virtuelle pour ActionScript, développée et open-source par Adobe – prend en charge la compilation juste-à-temps (JIT) pour certaines classes de scripts.

en plus d’introduire de nouvelles fonctionnalités, certains bugs ES3 ont été proposés pour être corrigés dans l’édition 4. Ces correctifs et d’autres, ainsi que la prise en charge de l’encodage/décodage JSON, ont été pliés dans la spécification ECMAScript, 5th Edition.,

le travail a commencé sur L’Édition 4 après l’achèvement de la spécification ES-CP (profil Compact), et s’est poursuivi pendant environ 18 mois où des progrès lents ont été réalisés en équilibrant la théorie de la spécification JavaScript 2 de Netscape avec l’expérience d’implémentation de JScript .NET de Microsoft. après un certain temps, l’accent La mise à jour n’a pas été sans controverse. À la fin de 2007, un débat entre Eich, plus tard directeur technique de la Fondation Mozilla, et Chris Wilson, architecte de plate-forme de Microsoft pour Internet Explorer, est devenu public sur un certain nombre de blogs., Wilson a averti que, parce que les modifications proposées à ECMAScript le rendaient incompatible à certains égards avec les versions antérieures du langage, la mise à jour revenait à « casser le Web », et que les parties prenantes qui s’opposaient aux modifications étaient « cachées ». Eich a répondu en déclarant que Wilson semblait « répéter des mensonges dans les blogs » et a nié qu’il y ait eu une tentative de supprimer la dissidence et a mis au défi les critiques de donner des exemples spécifiques d’incompatibilité., Il a souligné que Microsoft Silverlight et Adobe AIR s’appuient respectivement sur C# et ActionScript 3, qui sont tous deux plus grands et plus complexes que ECMAScript Edition 3.

5ème Éditionedit

Yahoo, Microsoft, Google et d’autres dissidents de la 4ème édition ont formé leur propre sous-comité pour concevoir une mise à jour moins ambitieuse D’ECMAScript 3, provisoirement nommée ECMAScript 3.1. Cette édition se concentrerait sur la sécurité et les mises à jour de la bibliothèque, avec un grand accent sur la compatibilité. Après le sparring public susmentionné, L’ECMAScript 3.,1 et les équipes D’ECMAScript 4 se sont mises d’accord sur un compromis: les deux éditions seraient travaillées en parallèle, avec une coordination entre les équipes pour s’assurer que ECMAScript 3.1 reste un sous-ensemble strict D’ECMAScript 4 tant en sémantique qu’en syntaxe.

cependant, les philosophies différentes dans chaque équipe ont entraîné des ruptures répétées de la règle du sous-ensemble, et il restait douteux que les dissidents D’ECMAScript 4 supportent ou implémentent ECMAScript 4 à l’avenir., Après plus d’un an depuis le désaccord sur L’avenir D’ECMAScript au sein du Comité technique Ecma 39, Les deux équipes sont parvenues à un nouveau compromis en juillet 2008: Brendan Eich a annoncé que Ecma TC39 se concentrerait sur le projet ECMAScript 3.1 (renommé plus tard en ECMAScript, 5e édition) avec la pleine collaboration de toutes les parties, et les fournisseurs viseraient au moins deux implémentations interopérables d’ici début 2009. En avril 2009, L’Ecma TC39 a publié le projet « final » de la 5ème édition et a annoncé que les tests d’implémentations interopérables devraient être achevés d’ici la mi-juillet., Le 3 décembre 2009, ECMA-262 5e édition a été publiée.

6ème édition – ECMAScript 2015Modifier

la 6ème édition, initialement connue sous le nom D’ECMAScript 6 (ES6) puis renommée plus tard en ECMAScript 2015, a été finalisée en juin 2015. Cette mise à jour ajoute une nouvelle syntaxe importante pour l’écriture d’applications complexes, y compris les déclarations de classe (class Foo { ... }), les modules ES6 comme import * as moduleName from "..."; export const Foo, mais les définit sémantiquement dans les mêmes termes que le mode strict ECMAScript 5., Les autres nouvelles fonctionnalités incluent les itérateurs et les boucles for...of, les générateurs de style Python, l’expression de la fonction arrow (() => {...}), let pour les déclarations locales, const tableaux typés, nouvelles collections (cartes, ensembles et WeakMap), promesses, améliorations numériques et mathématiques, réflexion, proxies (métaprogrammation pour les objets virtuels et les wrappers) et littéraux de modèles pour les chaînes. La liste complète est longue., En tant que première spécification » ECMAScript Harmony », elle est également connue sous le nom de  » ES6 Harmony. »

7ème édition – ECMAScript 2016Modifier

la 7ème édition, officiellement connue sous le nom D’ECMAScript 2016, a été finalisée en juin 2016. Ses caractéristiques incluent la délimitation par blocs de variables et de fonctions, les modèles de déstructuration (de variables), les appels de queue appropriés, l’opérateur d’exponentiation ** pour les nombres, await, async mots-clés pour la programmation asynchrone et tableau.prototype.inclut la fonction .,

L’opérateur exponentiel est équivalent à Math.pow, mais fournit une syntaxe plus simple similaire à des langages comme Python, F#, Perl et Ruby.async /attendre a été salué comme un moyen plus facile d’utiliser des promesses et de développer le code asynchrone.

8ème édition – ECMAScript 2017Modifier

la 8ème édition, officiellement connue sous le nom D’ECMAScript 2017, a été finalisée en juin 2017. Ses fonctionnalités incluent l’objet.les valeurs de, Objet.,entrées et Objet.getOwnPropertyDescriptors fonctions pour une manipulation facile des objets, async/await constructions qui utilisent des générateurs et des promesses, et des fonctionnalités supplémentaires pour la concurrence et les atomiques.

9ème édition – ECMAScript 2018modifier

la 9ème édition, officiellement connue sous le nom D’ECMAScript 2018, a été finalisée en juin 2018. Les nouvelles fonctionnalités incluent les opérateurs rest/spread pour les littéraux d’objet (trois points: ...identifier), l’itération asynchrone, Promise.prototype.finally et les ajouts à RegExp.,

l’opérateur spread permet de copier facilement les propriétés de l’objet, comme indiqué ci-dessous.

10ème édition – ECMAScript 2019modifier

la 10ème édition, officiellement connue sous le nom D’ECMAScript 2019, a été publiée en juin 2019. Fonctionnalités supplémentaires incluent, mais ne sont pas limités à, Array.prototype.flat, Array.prototype.flatMap, les modifications apportées à Array.sort et Object.fromEntries.

tableau.sort est maintenant garanti pour être stable, ce qui signifie que les éléments avec la même priorité de tri apparaîtront dans le même ordre dans le tableau trié., Array.prototype.flat(depth=1) aplatit un tableau à une profondeur spécifiée, ce qui signifie que tous les éléments du sous-tableau (jusqu’à la profondeur spécifiée) sont concaténés récursivement.

11ème édition – ECMAScript 2020modifier

la 11ème édition, officiellement connue sous le nom D’ECMAScript 2020, a été publiée en juin 2020. En plus des nouvelles fonctions, cette version inclut un type primitif BigInt pour les entiers de taille arbitraire, l’opérateur de coalescence nullish et l’objet globalThis.,

BigInts sont créés soit avec la balise BigInt constructeur ou avec la syntaxe 10n, où « n » est placé après le nombre littéral. BigInts permet la représentation et la manipulation d’entiers au-delà du nombre .MAX_SAFE_INTEGER, tandis que les nombres sont représentés par une valeur IEEE 754 64 bits à double précision., Les fonctions intégrées dans Math ne sont pas compatibles avec BigInts; par exemple, l’exponentiation de BigInts doit être fait avec la balise ** opérateur au lieu de Math.pow.

l’opérateur de coalescence nullish,??, renvoie son côté droit opérande lorsque sa gauche, c’est null ou undefined., Cela contraste avec l’opérateur|| , qui renverrait « string » pour tous les exemples.

false ?? "string" // -> falseNaN ?? "string" // -> NaNundefined ?? "string" // -> "string"

le chaînage optionnel vous permet d’accéder aux nœuds imbriqués dans un objet sans avoir un et vérifier à chaque niveau.

Un exemple: const code postal = personne?.l'adresse?.Code Postal. Si les propriétés ne sont pas présents, code postal sera undefined.

ES.NextEdit

ES.,Next est un nom dynamique qui fait référence à la version suivante au moment de la rédaction. ES.Les caractéristiques suivantes sont les propositions finies (ou » propositions de l’étape 4″) telles qu’énumérées à la proposition finie qui ne font pas partie d’une spécification ratifiée. Le Comité linguistique suit un modèle de « spécification vivante », de sorte que ces changements font partie de la norme et que la ratification est une formalité.