Bienvenue dans cette série hebdomadaire que sera « ES6 en détails » ! Nous explorerons ECMAScript 6 (ES6), la nouvelle édition, imminente, du langage JavaScript. ES6 contient de nouvelles et nombreuses fonctionnalités qui feront de JavaScript (JS) un langage plus puissant et expressif. Chaque semaine, nous détaillerons une de ces fonctionnalités. Avant de commencer, arrêtons-nous quelques minutes sur ce qu’est ES6 et ce qu’on peut en attendre.
Quel est le champ d’application d’ECMAScript ?
Le langage de programmation JavaScript a été standardisé par l’organisation de standardisation ECMA sous le nom d’ECMAScript (ES). Entre autres choses, ECMAScript définit :
- La syntaxe du langage : les règles d’analyse lexicale du langage, les mots-clés, les instructions, les déclarations, les opérateurs, etc.
- Les types : booléens, nombres, chaînes de caractères, objets, etc.
- Les concepts de prototype et d’héritage
- La bibliothèque de fonctionnalités et d’objets natifs standards : JSON,
Math
, les méthodes pour l’objetArray
, les méthodes d’inspection des objets, etc.
ECMAScript ne définit rien qui concerne HTML ou CSS ni même les API Web telles que le DOM (Document Object Model). Ces éléments sont définis dans des standards distincts. ECMAScript couvre les aspects de JavaScript qui interviennent dans un navigateur ou dans un autre environnement (par exemple node.js).
Le nouveau standard
La semaine dernière (NdT : le 16 avril 2015), la version finale de la spécification de la sixième édition du langage ECMAScript, a été proposée à l’Assemblée Générale ECMA pour relecture. Qu’est-ce que cela signifie ?
Cela signifie que cet été, nous aurons un nouveau standard pour le cœur du langage de programmation Javascript.
C’est une grande nouvelle. Un nouveau standard pour le langage JavaScript ne se fait pas en un jour. La dernière édition, ES5, est sortie en 2009. Le comité de standardisation travaille sur ES6 depuis cette date.
ES6 est une évolution majeure du langage. Votre code JS continuera à fonctionner. ES6 a été conçu pour apporter un maximum de compatibilité avec le code existant. En fait, de nombreux navigateurs supportent d’ores et déjà les fonctionnalités d’ES6, et les implémentent continuellement. Votre code JS est déjà exécuté par les navigateurs qui implémentent les fonctionnalités d’ES6. Si vous n’avez pas constaté de problèmes de compatibilité à ce jour, vous n’en verrez probablement jamais.
Compter jusqu’à 6
Les éditions précédentes du standard d’ECMAScript furent numérotées 1, 2, 3, et 5.
Qu’est-il arrivé à la quatrième édition ? Elle était planifiée — et le travail avait bien avancé — mais elle a été stoppée car considérée comme trop ambitieuse (elle proposait, par exemple, un système avancé de typage statique optionnel, doté de types génériques et d’une inférence de types).
ES4 a été un sujet controversé. Quand le comité de standardisation a finalement décidé d’arrêter ce projet, ses membres ont décidé de publier une version plus modeste d’ES5, puis ont commencé à travailler sur d’autres fonctionnalités. Ce travail a été appelé « Harmony », et c’est pourquoi la spécification ES5 contient ces deux phrases :
« ECMAScript est un langage passionnant et son évolution n’est pas figée. Une amélioration technique considérable se poursuivra dans les futures éditions de la spécification. »
Cette déclaration peut être lue comme une promesse faite pour ECMAScript 6.
Les promesses tenues
ES5, la version du langage datant de 2009, a introduit Object.create()
, Object.defineProperty()
, les accesseurs et les mutateurs (aussi respectivement appelés getters et setters), le mode strict et les objets JSON. J’ai déjà utilisé toutes ces fonctionnalités, et j’aime ce qu’ES5 a apporté à ce langage. Cependant, force est de constater que ces fonctionnalités eurent assez peu d’impact sur la façon d’écrire du code JS. Selon moi, l’innovation majeure a probablement été les nouvelles méthodes sur les tableaux : .map()
, .filter()
, et ainsi de suite.
Eh bien ES6 est différent. Il est le fruit d’années de travail harmonieux. Et il regorge de nouvelles fonctionnalités pour le langage et sa bibliothèque. C’est, à ce jour, la mise à jour la plus importante de JS. Les nouvelles fonctionnalités vont des fonctions basiques, comme les fonctions fléchées ou l’interpolation de chaînes de caractères, à de nouveaux concepts qui vont vous en mettre plein la vue comme les proxies et les générateurs. ES6 va changer la manière dont vous développez en JS.
Le but de cette série est de vous montrer comment, en examinant les nouvelles fonctionnalités qu’ES6 apporte aux développeurs JavaScript.
Nous démarrerons par la classique « fonctionnalité manquante » que j’attends impatiemment en Javascript depuis une décennie.
Rendez-vous la semaine prochaine pour découvrir les itérateurs et la boucle for-of
d’ES6.