:::: MENU ::::

La nouvelle spécification de javascript, EcmaScript 2016 est officialisée

C’est acté, la spécification de javascript en vigueur depuis ce mois de juin 2016 est EcmaScript 2016 . Si on peut affirmer que la derniere spécification, EcmaScript 2015 (ES6) était une révolution, si ce n’est LA révolution puisque contenant la plus grosse mise à jour du langage depuis sa création, ce n’est pas le cas de EcmaScript 2016.

Le nouveau processus de release annuel mis en place par le TC-39 a tenu sa promesse et a abouti comme prévu à une nouvelle version du standard . Pour rappel ce nouveau mode de travail, largement ouvert sur ses actions à travers github ou la mailinglist , permet d’offrir à la communauté un feedback constant sur l’avenir du langage. Ainsi, ce n’est une surprise pour personne si la nouvelle spécification EcmaScript 2016 est très relativement pauvre en nouveautés.

ECMAScript® 2016 Language Specification

Les nouveautés

Il s’agit de syntaxe pure. Autrement dit , il n’y a pas de nouveautés fonctionnelles . 

Array includes

Jusqu’à présent pour tester la présence d’un élément dans un tableau on devait faire ce genre de choses :


const monTableau = [1,2,3,4,5];

if(monTableau.indexOf(3) !== -1 ) {

//3 est dans le tableau

}

Désormais on pourra faire


const monTableau = [1,2,3,4,5];

if(monTableau.includes(3)) {

//3 est dans le tableau

}

Alors qu’avant on cherchait indirectement la présence d’une valeur par son index, array.includes retourne simplement un booléen si l’élément existe ou non. Si ça n’a l’air de rien, c’est un petit ajout qui rend le code plus parlant.

L’opérateur exponentiel

La aussi, c’est de la syntaxe avec l’arrivée d’un nouvel opérateur ** pour indiquer une exponentielle ( au même titre que + – * /)  .

Avant il fallait appeler l’objet Math :


Math.pow(2,3) //2*2*2

// 8

Avec ce nouvel opérateur on obtient quelque chose de plus concis


2**3 //2*2*2

// 8

Quel support ?

C’est en grande partie grâce au nouveau processus du TC-39 que le support d’ES2015 / 2016 et des versions à suivre est bon. Concernant ces 2 nouveautés, l’opérateur exponentiel n’est pour le moment supporté que dans les dernieres release de Edge 14 et Chrome 52. Pour array.includes en revanche c’est meilleur puisque Firefox 45 , la version de base pour l’ESR le gère déjà (et c’est même vrai depuis la V43 ) . Coté V8 c’est aussi vrai puisque depuis la version 4.7 la fonctionnalité, est implémenté avec donc un support depuis Chrome 47 et node 6.

Comme il ne s’agit que de syntaxe, vous pouvez facilement de transpiler en utilisant babel pour un support plus large.

La suite

La prochaine version devrait arriver dans 1 an, en attendant il ne faut pas hésiter à suivre l’évolution des propositions et notamment celles au stage 3 dont on peut être quasi certains de les voir intégrées à EcmaScript 2017 / ES8

Notes:
1. le groupe de travail à l’origine des spécification de javascript
le groupe de travail à l’origine des spécification de javascript

So, what do you think ?