JavaScript domine le web et ECMAScript, le cœur du langage, arrive à maturité. La nouvelle spécification (ES6 ou JS2), attendue pour le milieu de l'année, apporte de nombreuses innovations déjà testables. Firefox offre actuellement la meilleure prise en charge , mais des polyfills via des transpileurs comme Google Traceur sont également possibles. Voici un bref aperçu des nouvelles fonctionnalités d'ES6.
Le nouveau mot-clé let fait beaucoup mieux que var : le scoping se comporte désormais exactement comme dans les autres langages (C/C++, Java), c'est pourquoi les blocs if ont désormais également leur propre portée. Le levage, c'est-à-dire la priorisation des déclarations de variables (et non des affectations de valeurs) dans le domaine d'application respectif, sera également réparé.:
console.log(x); var x = 'foo'; // undefined console.log(y); let y = 'bar'; // not initialized
Le nombre d'autres innovations est important : des constantes (const), des valeurs par défaut pour les fonctions (function pow(a,b=2) { return Math.pow(a,b); }), une nouvelle notation pour les fonctions (let pow = (a,b=2) => Math.pow(a,b);), une variété de nouvelles fonctions (repeat(), contain(), StartsWith(), find(), findIndex()), la nouvelle construction de boucle pour ... de.
Il convient également de mentionner les nouveaux types de données Set, Map, Proxy et Symbol, la possibilité d'importer (des parties d'autres) fichiers JavaScript avec importation et une nouvelle syntaxe intuitive pour les classes et l'héritage. Mais souvent, il y a aussi des choses petites mais très attendues comme la possibilité de sauts de ligne dans les chaînes littérales (notez les guillemets spéciaux):
`foo bar`
JavaScript est depuis longtemps bien plus qu'un simple outil pour des astuces web mineures : il sert à créer des applications web puissantes et performantes, aussi performantes que leurs homologues de bureau. Grâce à la multitude de nouvelles fonctionnalités utiles et à la prise en charge existante d'ES6, programmer est deux fois plus agréable.
Qui n'a pas toujours voulu vérifier l'égalité de deux nombres à l'aide de la nouvelle constante Number.EPSILON , dont la valeur porte la différence entre 1 et la valeur à virgule flottante immédiatement supérieure?
let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;