JavaScript dominuje w sieci, a ECMAScript, rdzeń języka rośnie. Nowa specyfikacja (ES6 lub JS2), która ma być spodziewana w połowie tego roku, niesie ze sobą liczne innowacje, które można już dziś wypróbować. Firefox ma obecnie najlepsze wsparcie , ale możliwe są również wypełniacze przez tak zwane transpilery, takie jak Google Traceur . Poniżej znajduje się krótki przegląd nowych funkcji ES6.
Nowe słowo kluczowe pozwala robić wiele rzeczy lepiej niż var : Scoping zachowuje się teraz dokładnie tak samo, jak w innych językach (C / C ++, Java), dlatego też bloki if mają teraz również swój własny zakres. Podnoszenie, czyli przenoszenie deklaracji zmiennych (nie przypisań wartości) w odpowiednim zakresie jest również naprawione:
console.log(x); var x = 'foo'; // undefined console.log(y); let y = 'bar'; // not initialized
Liczba innych innowacji jest długa: stałe (const), domyślne wartości funkcji (funkcja pow (a, b = 2) {return Math.pow (a, b);}), nowa notacja funkcji (niech pow = (a, b = 2) => Math.pow (a, b);), wiele nowych funkcji (repeat (), includes (), startWith (), find (), findIndex ()), nowa konstrukcja pętli dla ... z.
Należy również wspomnieć o nowym zestawie typów danych, mapie, proxy i symbolu, imporcie (części innych) plików JavaScript z importem oraz o nowej, intuicyjnej składni klas i dziedziczenia. Często zdarzają się również małe, ale długo oczekiwane rzeczy, takie jak możliwość łamania linii w literałach ciągów (zwróć uwagę na specjalne cudzysłowy):
`foo bar`
JavaScript od dawna był czymś więcej niż tylko narzędziem do wykonywania małych sztuczek na stronach internetowych - tworzy potężne, wydajne aplikacje internetowe, które w niczym nie ustępują swoim odpowiednikom na komputery stacjonarne. Dzięki dużej liczbie przydatnych innowacji i wsparciu już dostępnemu z ES6 programowanie jest dwa razy przyjemniejsze.
Kto nie zawsze chciał sprawdzić równość dwóch liczb za pomocą nowej stałej Number.EPSILON , której wartość zawiera różnicę między 1 a następną większą wartością zmiennoprzecinkową?
let cmp = (a,b) => Math.abs(a-b)