Добро пожаловать в JavaScript 2.0

JavaScript доминирует в веб-разработке, а ECMAScript, ядро этого языка, развивается. Новая спецификация (ES6 или JS2), ожидаемая в середине года, привносит множество нововведений, которые уже можно протестировать. В настоящее время Firefox предлагает наилучшую поддержку , но также возможны полифилы через транспайлеры, такие как Google Traceur . Ниже приведён краткий обзор новых возможностей ES6.


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

`foo

bar`

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

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

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