Вітаємо JavaScript 2.0

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


Нове ключове слово let робить набагато краще, ніж var : Scoping тепер поводиться так само, як і в інших мовах (C / C ++, Java), саме тому блоки if-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 за допомогою `import` та новий, інтуїтивно зрозумілий синтаксис для класів та успадкування. Однак часто це невеликі, але довгоочікувані функції, такі як можливість додавати розриви рядків у рядкові літерали (зверніть увагу на спеціальні лапки).:

`foo

bar`

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

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

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