Добро пожаловать в 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(), BeginsWith(), find(), findIndex()), новая конструкция цикла для... of.

Также стоит упомянуть новые типы данных Set, Map, Proxy и Символ, возможность импортировать (части других) файлов JavaScript с помощью импорта и новый интуитивно понятный синтаксис для классов и наследования. Но часто встречаются и небольшие, но долгожданные вещи вроде возможности переноса строки в строковых литералах (обратите внимание на специальные кавычки):

`foo

bar`

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

Кому не всегда хотелось проверять равенство двух чисел с помощью новой константы Number.EPSILON , значение которой представляет собой разницу между 1 и следующим более высоким значением с плавающей запятой?

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