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);}), новая нотация для функций (пусть pow = (a, b = 2) => Math.pow (a, b);), множество новых функций (repeat (), contains (), startWith (), find (), findIndex ()), новая конструкция цикла для ... из.
Также следует упомянуть новый набор типов данных, карту, прокси и символ, импорт (частей других) файлов JavaScript с импортом и новый интуитивно понятный синтаксис для классов и наследования. Но часто бывают и мелкие, но долгожданные вещи вроде возможности разрывов строк в строковых литералах (обратите внимание на специальные кавычки):
`foo bar`
JavaScript уже давно является гораздо большим, чем просто инструментом для небольших хитростей веб-сайтов - он создает мощные, высокопроизводительные веб-приложения, которые ни в чем не уступают своим настольным аналогам. Благодаря большому количеству полезных нововведений и поддержке, уже доступной со стороны ES6, программирование становится вдвойне увлекательнее.
Кому не всегда хотелось проверять равенство двух чисел с помощью новой константы Number.EPSILON , значение которой представляет собой разницу между 1 и следующим более высоким значением с плавающей запятой?
let cmp = (a,b) => Math.abs(a-b)