JavaScript domină web-ul – iar ECMAScript, nucleul limbajului, se maturizează. Noua specificație (ES6 sau JS2), așteptată la jumătatea anului, aduce numeroase inovații care pot fi deja testate. Firefox oferă în prezent cel mai bun suport , dar sunt posibile și polyfill-uri prin intermediul transpiler-elor precum Google Traceur . Urmează o scurtă prezentare generală a noilor caracteristici ale ES6.
Noul cuvânt cheie let face multe lucruri mai bine decât var : scoping se comportă acum exact ca în alte limbi (C/C++, Java), motiv pentru care dacă blocurile au acum și propriul domeniu de aplicare. De asemenea, se va repara ridicarea, adică prioritizarea declarațiilor de variabile (nu a atribuirilor de valoare) în domeniul respectiv.:
console.log(x); var x = 'foo'; // undefined console.log(y); let y = 'bar'; // not initialized
Numărul altor inovații este mare: constante (const), valori implicite pentru funcții (funcție pow(a,b=2) { return Math.pow(a,b); }), o nouă notație pentru funcții (let pow = (a,b=2) => Math.pow(a,b);), o varietate de funcții noi (repeat(), conține(), find(), find the new (index), find(i), find the new() de.
De asemenea, merită menționate noile tipuri de date Set, Map, Proxy și Symbol, capacitatea de a importa (părți ale altor) fișiere JavaScript cu import și o nouă sintaxă intuitivă pentru clase și moștenire. Dar adesea există și lucruri mici, dar mult așteptate, cum ar fi posibilitatea întreruperilor de rând în literalele șir (rețineți ghilimelele speciale):
`foo bar`
JavaScript a fost mult timp mult mai mult decât un simplu instrument pentru trucuri minore pentru site-uri web - este folosit pentru a crea aplicații web puternice și de înaltă performanță, care sunt la fel de bune ca omologii lor desktop. Cu abundența de funcții noi utile și suportul existent pentru ES6, programarea este de două ori mai plăcută.
Cine nu a dorit întotdeauna să verifice egalitatea a două numere cu ajutorul noii constante constante Number.EPSILON , a cărei valoare poartă diferența dintre 1 și următoarea valoare în virgulă mobilă mai mare?
let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;