Maison > interface Web > js tutoriel > ES6 (ES2015) et au-delà: Comprendre le versioning JavaScript

ES6 (ES2015) et au-delà: Comprendre le versioning JavaScript

William Shakespeare
Libérer: 2025-02-15 12:13:11
original
217 Les gens l'ont consulté

ES6 (ES2015) and Beyond: Understanding JavaScript Versioning

Ces dernières années, le développement de JavaScript a augmenté. Les nouvelles spécifications ECMAScript sont publiées chaque année, ce qui fait la gestion de la version JavaScript, la prise en charge des fonctionnalités pour chaque version et la façon d'écrire du code orienté vers l'avenir est déroutant.

Pour mieux comprendre les raisons de cette vague de mises à jour apparemment continue, passons en revue brièvement l'histoire de JavaScript et ses versions et comprenons pourquoi le processus de normalisation est si important.

Points clés

  • ES6 (également connu sous le nom d'ES2015) marque un changement majeur dans la gestion de la version JavaScript, introduisant des fonctionnalités telles que les classes, les promesses, les fonctions fléchées, les modules ES, les générateurs et les itérateurs. Il s'agit d'une mise à jour de base importante qui jette les bases des futures mises à jour annuelles de la version JavaScript annuelle.
  • ES2015 établit un processus TC39 basé sur la proposition pour la discussion et l'adoption de nouvelles fonctionnalités linguistiques. Ce processus se compose de cinq étapes: Strawman (préface), proposition (proposition), projet (projet), candidat (candidat) et fini (fini).
  • Après ES2015, les versions suivantes sont publiées en juin et ES2016 (ES7) et ES2017 (ES8) introduisent des caractéristiques et des améliorations incrémentielles. ES2018 présente de nouvelles fonctionnalités puissantes telles que les itérateurs asynchrones ainsi que l'expansion des objets et les propriétés résiduelles.
  • renommé ES6 à ES2015 pour refléter son année de sortie et se débarrasser du numéro de version. Cette décision consiste à éviter la confusion et à démontrer que JavaScript est un langage dynamique qui est constamment mis à jour et amélioré. Les nouvelles conventions de dénomination aident également à indiquer la régularité des mises à jour et des améliorations linguistiques.

Early History of JavaScript Version Management

Le prototype de JavaScript a été écrit en mai 1995 par Brendan Eich en seulement dix jours. Il a été initialement recruté pour mettre en œuvre le runtime du programme pour Netscape Navigator, mais l'équipe de gestion a poussé à utiliser une langue de style C pour compléter le nouveau Java de l'époque.

JavaScript a fait ses débuts en décembre 1995 dans Netscape Navigator version 2. L'année suivante, le JavaScript de Microsoft inverse a créé sa propre version, appelée JScript. Sorti avec Internet Explorer Browser version 3, JScript est presque exactement le même que JavaScript - même en incluant tous les mêmes bogues et bizarreries - mais il a des fonctionnalités supplémentaires spécifiques aux explorateurs d'Internet.

La naissance d'Ecmascript

La nécessité de s'assurer que JScript (et toute autre variante) reste compatible avec JavaScript invite les microsystèmes Netscape et Sun pour normaliser le langage. Ils l'ont fait avec l'aide de l'Association européenne des fabricants informatiques (ECMA), qui sera responsable de l'hébergement de la norme. Le langage standardisé est appelé ECMAScript pour éviter la violation des marques Java de Sun - un mouvement qui a causé pas mal de confusion. En fin de compte, ECMAScript est utilisé pour se référer à la spécification, tandis que JavaScript (et est toujours) utilisé pour se référer à la langue elle-même.

Le groupe de travail responsable de la gestion et de la maintenance de la version JavaScript d'ECMAScript est connu sous le nom de comité technique 39 ou TC39. Il se compose de représentants de tous les principaux fournisseurs de navigateurs tels que Apple, Google, Microsoft et Mozilla, ainsi que des experts et des représentants invités d'autres sociétés intéressées par le développement Web. Ils organisent des réunions régulières pour déterminer la direction de la langue.

Lorsque JavaScript a été standardisé par TC39 en 1997, la spécification a été appelée ECMAScript version 1. Initialement, les versions ultérieures d'Ecmascript ont été publiées chaque année, mais ont fini par le sporadique en raison d'un manque de consensus et d'un large ensemble de fonctionnalités difficiles à gérer autour d'ECMAScript 4. La version a donc été terminée et rétrécie à 3.1, mais n'a pas été finalisée par ce nom, mais a finalement évolué en Ecmascript 5. Il a été publié en décembre 2009, 10 ans après la sortie d'Ecmascript 3, et a introduit des fonctionnalités telles que l'API de sérialisation JSON, la fonction.prototype.bind et le mode strict. Deux ans plus tard, une version de maintenance a été publiée pour clarifier une certaine ambiguïté dans la dernière itération 5.1.

ecmascript 2015 et revival des versions annuelles

Comme TC39 résout le désaccord causé par Ecmascript 4, Brendan Eich a souligné la nécessité d'une libération plus courte et plus petite. La première de ces nouvelles spécifications est es2015 (nommé ECMAScript 6 ou ES6 à l'origine). Cette version est une pierre angulaire énorme mais nécessaire qui prend en charge la future gestion annuelle de version JavaScript. Il contient de nombreuses fonctionnalités que de nombreux développeurs aiment aujourd'hui beaucoup, comme:

  • catégorie
  • promesse
  • Fonction de flèche
  • ES Module
  • générateur et itérateur

es2015 est la première version qui suit le processus TC39 , un modèle basé sur la proposition pour discuter et adopter des fonctionnalités linguistiques.

TC39 Processus

Il doit passer par cinq étapes avant que la proposition ne soit acceptée dans la prochaine version ECMAScript.

Étape 0: Strawman (Preface)

Il s'agit d'une étape pratique qui permet la soumission d'idées à la spécification. Tout le monde peut faire des suggestions de fonctionnalités - c'est des membres TC39 et des non-membres enregistrés en tant que contributeurs.

Étape 1: proposition (proposition)

La première phase de formalisation de la proposition. Doit:

  • Décrire tous les problèmes existants corrigés par cette solution
  • Fournit une vue d'ensemble de l'API, ainsi que des détails de mise en œuvre avancés, ainsi que des polyfills et / ou des démonstrations
  • Discuter des obstacles potentiels à l'avance

Une personne en charge doit être sélectionnée pour adopter et faire avancer la proposition. Cette personne doit être un membre du TC39. Étape 2: Draft (Draft)

Il s'agit d'une étape importante que cette fonctionnalité peut être incluse dans les futures versions ECMAScript. Ici, la syntaxe et la sémantique de la proposition sont détaillées en utilisant le langage formel décrit par la spécification. Une implémentation expérimentale doit être fournie pour le moment.

Étape 3: candidat (candidat)

Ici, la plupart des technologies de contenu et de support de la proposition ont été développées, mais des commentaires supplémentaires des utilisateurs et des implémenteurs (tels que les fabricants de navigateurs). Une fois acquis et que des mesures sont prises, le résumé et les détails de spécification seront finalisés et signés par le réviseur désigné et l'éditeur désigné. Étant donné que cette étape nécessite une implémentation cohérente, seuls les changements critiques seront acceptés par la suite.

Étape 4: terminé (terminé)

Cette proposition a été acceptée et peut être ajoutée à ECMAScript. Par conséquent, il est intrinsèquement:

  • Les tests d'acceptation pour une partie de la suite test262 Écrit en javascript ont été écrits pour démontrer la conformité et le comportement de la fonction
  • Au moins deux implémentations conformes sont disponibles et publiées, ce qui prouve tous leur robustesse et leur disponibilité des développeurs
  • La demande de traction a été soumise à la base officielle de code ECMA-262 et a été signée par l'édition de spécification.

La documentation de contribution de base de code ci-dessus détaille les détails de l'utilisation des problèmes de github et des demandes de traction pour gérer l'ajout de langues.

Dans l'attente de

Après avoir terminé le processus de gestion et de mise à jour de la version JavaScript pour ES2015 et établi TC39, les versions ultérieures sont publiées en juin, la proposition étant incluse pendant un an. Au moment de la rédaction du moment de la rédaction, il y a déjà trois nouvelles spécifications.

es2016

Également connu sous le nom d'ES7, il s'agit de la première version incrémentielle plus petite d'ECMAScript. Outre les corrections de bogues, il ajoute uniquement deux fonctionnalités.

array.prototype. y compris

Cet exemple de méthode simplifie le fonctionnement de la recherche de valeurs dans un tableau:

// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;

// ES2016:
const hasBob = names.includes('bob');
Copier après la connexion
Copier après la connexion

Opérateur d'exposant

Avant ES2016, le fonctionnement des exposants peut être effectué à l'aide de Math.Pow (base, exposant). Cette version présente un opérateur (**) qui a sa propre priorité:

// ES2016 之前
Math.pow(5, 3); // => 125

// ES2016
5 ** 3; // => 125
Copier après la connexion
Copier après la connexion

es2017

es2017 (aka es8) est une version légèrement plus grande qui contient des méthodes et des structures de syntaxe utiles.

fonction asynchrone

Promise nous a sauvés de l'enfer de rappel, mais leurs API sont toujours verbeuses. Les fonctions asynchrones les abstraitent en utilisant des codes synchrones très similaires aux codes synchrones:

// Promise
const getProfile = name => {
  return fetch(`https://some-api/people/${name}`)
    .then(res => res.json())
    .then(({ profile }) => profile); // 从解析的对象中解构 `profile`
};

// async/await
const getProfile = async name => {
  const res = await fetch(`https://some-api/people/${name}`);
  const { profile } = await res.json();
  return profile;
};
Copier après la connexion

Méthode de remplissage de chaîne

string.prototype.padstart (Longueur, Padder) et Padend (Longueur, Padder) ajouteront à plusieurs reprises Padder au début et à la fin de la chaîne (ceci est facultatif, par défaut aux espaces) jusqu'à ce que les caractères de longueur soient atteints:

'foo'.padStart(6);          // => '   foo';
'foo'.padEnd(6);            // => 'foo   ';
'foo'.padStart(10, 'bar');  // => 'barbarbfoo';
'foo'.padEnd(10, 'bar');    // => 'foobarbarb';
Copier après la connexion

D'autres fonctionnalités incluent des virgules de fuite, des opérations de mémoire partagée et de atomique et des méthodes d'objet statique (object.entries (), object.values ​​() et object.getownpropertyDescriptors ()).

es2018

Au moment de la rédaction, cette dernière version présente un petit nombre de nouvelles fonctionnalités puissantes.

Async iterator

tandis que Promise.all () vous permet d'attendre l'analyse de plusieurs promesses, dans certains cas, vous devrez peut-être itérer les valeurs récupérées de manière asynchrone. Vous pouvez maintenant attendre l'itérateur asynchrone avec le tableau des promesses:

// ES2016 之前:
const hasBob = names.indexOf('bob') > -1;

// ES2016:
const hasBob = names.includes('bob');
Copier après la connexion
Copier après la connexion

OBJET Étend les propriétés et les propriétés restantes

En surface, ces deux améliorations de syntaxe sont devenues populaires parmi les développeurs JavaScript en raison de la disponibilité de compilateurs tels que Babel. L'expansion des objets et les propriétés résiduelles sont similaires à l'expansion du tableau et aux propriétés résiduelles et permettent une copie peu profonde et un regroupement de déconstruction des propriétés des objets:

// ES2016 之前
Math.pow(5, 3); // => 125

// ES2016
5 ** 3; // => 125
Copier après la connexion
Copier après la connexion

D'autres propositions acceptées incluent promesse.prototype.finalement (), ainsi que des améliorations des expressions régulières et des littéraux de modèle.

Conclusion

JavaScript s'est considérablement développé en très peu de temps. Bien que cela soit dû à l'excellent travail de la norme ECMAScript et de TC39, c'était initialement un voyage ardu en raison du manque de stabilité et de cohésion dans la gestion et le développement de la version JavaScript précédente.

Parce que le processus de proposition est relativement mature, la langue ne peut être améliorée que de manière pragmatique et contrôlable. C'est le moment idéal pour les développeurs Web!

FAQ sur la gestion de la version JavaScript: ES6 et ES2015

Quelle est la principale différence entre ES6 et ES2015?

ES6 et ES2015 sont essentiellement les mêmes. ES6 est la sixième édition du langage de programmation ECMAScript standardisé à l'échelle internationale par ECMA. ES2015 n'est que le nouveau nom pour ES6, reflétant l'année où elle a été publiée. Les renoms sont censés refléter l'année de sortie et se débarrasser du numéro de version, ce qui peut être déroutant.

Pourquoi renommer ES6 à ES2015?

renommé ES6 à ES2015 pour refléter son année de sortie et se débarrasser du numéro de version. Cette décision consiste à éviter la confusion et à démontrer que JavaScript est un langage dynamique qui est constamment mis à jour et amélioré. Les nouvelles conventions de dénomination aident également à indiquer la régularité des mises à jour et des améliorations linguistiques.

Quelles fonctionnalités clés sont introduites dans ES6 / ES2015?

ES6 / ES2015 introduit de nombreuses nouvelles fonctionnalités pour JavaScript, y compris let et const pour les déclarations variables, les fonctions de flèche pour la syntaxe de la fonction plus courte, les littéraux de modèle pour l'interpolation de chaîne, pour les classes de programmation orientées objet, prometteur pour la programmation asynchrone, pour la programmation asynchronique, Modules pour l'organisation du code, etc.

ES6 / ES2015 Comment améliorer le codage JavaScript?

ES6 / ES2015 Améliore le codage JavaScript de diverses manières. Il introduit de nouvelles syntaxes et fonctionnalités qui rendent la langue plus puissante et plus facile à utiliser. Par exemple, les fonctions Arrow fournissent une syntaxe plus propre pour l'écriture des fonctions, tandis que la promesse facilite la gestion des opérations asynchrones. L'introduction de modules aide également à mieux organiser le code, ce qui facilite la gestion et le maintien.

Comment commencer à utiliser la fonction ES6 / ES2015 dans mon code JavaScript?

Pour commencer la fonctionnalité ES6 / ES2015 dans le code JavaScript, vous pouvez utiliser un traducteur comme Babel qui convertit le code ES6 en code ES5 qui peut s'exécuter dans le navigateur actuel. Vous pouvez également utiliser un packer de module comme WebPack pour gérer et regrouper vos modules JavaScript.

Y a-t-il des problèmes de compatibilité avec ES6 / ES2015?

Bien que la plupart des caractéristiques de ES6 / ES2015 soient prises en charge par la plupart des navigateurs modernes, il peut y avoir des problèmes de compatibilité avec les navigateurs plus âgés. Pour garantir la compatibilité, vous pouvez utiliser Polyfill, qui offre des fonctionnalités que vous attendez du support natif de votre navigateur.

Quelle est la différence entre JavaScript et Ecmascript?

JavaScript est un langage de programmation développé à l'origine par Netscape. ECMascript est une version standard JavaScript qui est normalisée à l'échelle internationale par ECMA. JavaScript implémente ECMAScript, ce qui signifie qu'il suit les règles et structures définies dans la norme ECMAScript.

Quel est l'avenir de JavaScript après ES6 / ES2015?

Après ES6 / ES2015, JavaScript continuera d'évoluer, avec de nouvelles versions publiées chaque année, et chaque version introduit de nouvelles fonctionnalités et améliorations. L'avenir de JavaScript peut voir des fonctionnalités plus solides, de meilleures performances et une compatibilité plus élevée sur différentes plates-formes et appareils.

Quelle est la relation entre TypeScript et ES6 / ES2015?

TypeScript est un superset de JavaScript qui ajoute des types statiques à la langue. Il prend en charge toutes les fonctionnalités de ES6 / ES2015, et même certaines fonctionnalités supplémentaires que l'on trouve dans JavaScript. Le code TypeScript est traduit en JavaScript, il peut donc s'exécuter dans n'importe quel environnement JavaScript.

Quels sont les avantages de l'utilisation d'ES6 / ES2015 que d'utiliser des versions antérieures de JavaScript?

L'utilisation d'ES6 / ES2015 offre de nombreux avantages par rapport aux versions antérieures de JavaScript. Il introduit de nouvelles syntaxes et fonctionnalités qui rendent la langue plus puissante et plus facile à utiliser. Il améliore également l'organisation et la maintenabilité du code et fournit une meilleure prise en charge des applications complexes et des bases de code importantes.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Derniers articles par auteur
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal