Вітаємо JavaScript 2.0

JavaScript домінує в Інтернеті, а ECMAScript, ядро мови, розвивається. Нова специфікація (ES6 або JS2), вихід якої очікується в середині року, приносить численні інновації, які вже можна протестувати. Firefox наразі пропонує найкращу підтримку , але також можливі поліфіли через транспайлери, такі як Google Traceur . Далі наведено короткий огляд нових функцій ES6.


Нове ключове слово let робить багато речей краще, ніж var : область видимості тепер поводиться так само, як і в інших мовах (C/C++, Java), тому блоки if тепер також мають власну область видимості. Підйом, тобто пріоритезація декларацій змінних (а не призначення значень) у відповідній області, також буде відремонтовано:

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

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

Кількість інших нововведень велика: константи (const), значення за замовчуванням для функцій (function pow(a,b=2) { return Math.pow(a,b); }), нова нотація для функцій (let pow = (a,b=2) => Math.pow(a,b);), безліч нових функцій (repeat(), contains(), startsWith(), find(), findIndex()), нова конструкція циклу для ... з.

Також варто згадати нові типи даних Set, Map, Proxy і Symbol, можливість імпортувати (частини інших) файлів JavaScript за допомогою імпорту та новий інтуїтивно зрозумілий синтаксис для класів і успадкування. Але часто є також маленькі, але довгоочікувані речі, як-от можливість розривів рядків у рядкових літералах (зверніть увагу на спеціальні лапки):

`foo

bar`

JavaScript вже давно став чимось більшим, ніж просто інструментом для незначних веб-хитрощів – він використовується для створення потужних, високопродуктивних веб-додатків, які не поступаються своїм настільним аналогам. Завдяки великій кількості корисних нових функцій та існуючій підтримці ES6, програмування стало вдвічі приємнішим.

Хто не завжди хотів перевіряти рівність двох чисел за допомогою нової константи Number.EPSILON , значення якої є різницею між 1 і наступним вищим значенням з плаваючою комою?

let cmp = (a,b) => Math.abs(a-b) < Number.EPSILON;
Назад