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;