Przyszłość
Komisja ECMA CT39 planuje wydawać kolejne wersje standardu ECMAScript co około 12 miesięcy.
Kolejne wersje
ES7
Standard ECMAScript 7, znany też jako ES2016, został opublikowany w Czerwcu 2016.
ES7
dodaje do standardu dwa nowe elementy: metodę Array.prototype.includes()
oraz operator potęgowania **
.
ES 8
Niebawem ukaże się standard ECMAScript 8 - ES2017
.
ES8
dodaje jedną znaczącą funkcjonalność: funkcje async/await
.
ES.Next
Jest to nazwa dla obecnie kolejnej wersji standardu. Jej elementy nazywane są propozycjami.
Nowe funkcjonalności
Kolejne wersje ECMAScript przyniosą sporo nowych funkcjonalności. Poniżej lista kliku najciekawszych.
Array.prototype.includes()
ES7
Obecnie aby sprawdzić czy element znajduje się w tablicy trzeba skorzystać z metody Array.indexOf()
.
let numbers = [1, 2, 3];
let containsOne = numbers.indexOf(1) > -1;
console.log(containsOne); // -> true
Nowa metoda Array.includes()
pozwoli na prostszy zapis.
let numbers = [1, 2, 3];
let containsOne = numbers.includes(1);
console.log(containsOne); // -> true
Operator potęgowania ES7
Obecnie aby podjeść x
do potęgi y
należy wykorzystać metodę Math.pow()
.
let x = 2;
let y = 3;
let result = Math.pow(x,y);
console.log(result); // -> 8
Będziemy mogli zapisać tę operację prościej wykorzystując operator **
.
let x = 2;
let y = 3;
let result = x ** y;
console.log(result); // -> 8
Funkcje async/await
ES8
Funkcje async/await
są nowym sposobem obsługiwania asynchronicznych akcji.
Operator spread
Operator spread
jest przeciwieństwem operatora resztowego.
let [a, ...b] = [1, 2, 3];
console.log(a); // -> 1
console.log(b); // -> [2, 3]
let numbers = [a, ...b];
console.log(numbers) // -> [1, 2, 3];
Operator ...
pozwala podzielić tablicę na pojedyncze elementy.
Dekoratory
Jeśli nasza funkcja będzie przyjmowała parametry target
, name
oraz descriptor
i zwracała descriptor
to będzie mogła zostać użyta jako dekorator.
function readonly (target, name, descriptor){
descriptor.writable = false;
return descriptor;
}
class Person {
@readonly
name () {
return `${this.first} ${this.last}`;
}
}
Opcjonalne adnotacje typów
Będziemy mogli wykorzystywać adnotacje typów znane z Flow
lub te z języka TypeScirpt
.
function square (a: number, b: number): number {
return a * b;
}