Witamy w JavaScript 2.0

JavaScript dominuje w sieci – a ECMAScript, rdzeń języka, dojrzewa. Nowa specyfikacja (ES6 lub JS2), spodziewana w połowie roku, wprowadza liczne innowacje, które można już przetestować. Firefox oferuje obecnie najlepsze wsparcie , ale możliwe są również polyfille za pomocą transpilatorów, takich jak Google Traceur . Poniżej znajduje się krótki przegląd nowych funkcji ES6.


Nowe słowo kluczowe let robi wiele rzeczy lepiej niż var : scoping zachowuje się teraz dokładnie tak, jak w innych językach (C/C++, Java), dlatego też bloki if mają teraz także własny zakres. Naprawiony zostanie także hoisting, czyli nadawanie priorytetów deklaracjom zmiennych (a nie przypisywaniu wartości) w odpowiednim zakresie:

console.log(x);
var x = 'foo'; 
// undefined

console.log(y);
let y = 'bar';
// not initialized

Liczba innych innowacji jest duża: stałe (const), domyślne wartości funkcji (funkcja pow(a,b=2) { return Math.pow(a,b); }), nowa notacja funkcji (let pow = (a,b=2) => Math.pow(a,b);), szereg nowych funkcji (repeat(), zawiera(), startWith(), find(), findIndex()), nowa konstrukcja pętli dla... of.

Warto również wspomnieć o nowych typach danych Set, Map, Proxy i Symbol, możliwości importowania (części innych) plików JavaScript z importem oraz nowej intuicyjnej składni klas i dziedziczenia. Ale często są też małe, ale długo oczekiwane rzeczy, takie jak możliwość łamania wierszy w literałach łańcuchowych (zwróć uwagę na specjalne cudzysłowy):

`foo

bar`

JavaScript od dawna jest czymś więcej niż tylko narzędziem do drobnych sztuczek na stronach internetowych – służy do tworzenia potężnych, wydajnych aplikacji internetowych, które dorównują jakością swoim odpowiednikom na komputery stacjonarne. Dzięki mnóstwu przydatnych nowych funkcji i istniejącemu wsparciu dla 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) < Number.EPSILON;
Plecy