Недавно были выпущены спецификации ECMAScript 2017. Да, он называется ECMAScript 2017, а не ES8. Соглашение об именах началось с ES1 и прошло 1, 2, 3, 5, 5.1, 6, но ES6 позже был переименован в ECMAScript 2015. Последующие выпуски называются ECMAScript 2016 и 2017.
Хватит номенклатуры, давайте перейдем к новым функциям, которые поддерживаются этими спецификациями.
- Object.entries
- Object.values
- Заполнение строк
- Object.getOwnPropertyDescriptors
- Завершающие запятые в списках параметров функций и вызовах
- Асинхронные функции
- Оператор возведения в степень
- Array.prototype.includes
Давайте посмотрим на некоторые подробные объяснения каждого из этих
Object.entries
В объект добавлен новый метод entries. Когда тип данных JavaScript с парами ключ-значение передается методу записей, возвращаемое значение представляет собой двумерный массив ключей и значений.
Object.values
Метод values работает аналогично своему предшественнику, но вместо того, чтобы возвращать ключи и значения, он возвращает одномерный массив значений.
Заполнение строк
В String добавлены два метода padStart
и padEnd
для поддержки заполнения в начале и в конце строки. Ниже приведены определение и примеры методов.
По умолчанию: String.prototype.padStart (maxLength [, fillString])
По умолчанию: String.prototype.padEnd (maxLength [, fillString])
Object.getOwnPropertyDescriptors
Object.getOwnPropertyDescriptors (obj) принимает объект obj и возвращает дескрипторы свойства, описывающие атрибуты свойства (его значение, возможность записи и т. д.)
В приведенном выше примере obj имеет целочисленное значение, присвоенное id, и метод получения с панелью имен. Таким образом, getOwnPropertyDescriptors
возвращает значение вместе с другими свойствами, такими как записываемый, перечисляемый, настраиваемый, получатель, установщик.
Завершающие запятые в списках параметров функций и вызовах
В дальнейшем литералы объектов, литералы массивов и параметры функций позволяют trailing comma
Почему это важно? Это решает такие проблемы, как многострочная фиксация для добавления нового параметра, переупорядочивание элементов проще, потому что вам не нужно добавлять и удалять запятые, если последний элемент меняет свою позицию.
Асинхронные функции:
Использование обещаний и генераторов стало популярным. Хотя наш код был возрожден из ада обратных вызовов, множественные затем кластеры можно упростить еще больше, и код может быть намного красивее и разборчивее.
Оператор возведения в степень
Прошли те времена, когда вам приходилось полагаться на объект Math JavaScript для выполнения экспоненциальной операции. ECMAScript 2017 вводит оператор **
для того же
Вы также можете выполнить x ** = y для прямого присвоения значения переменной x
Array.prototype.includes
Это функция, которая должна была быть включена в JavaScript много лет назад, поскольку проверки типа array.indexOf(element) !== -1
, array.indexOf(element) >0
, ~array.indexOf(element)
преследовали каждую кодовую базу JS. Вместо того, чтобы проверять, существует ли элемент в массиве, мы проверяем индекс первого вхождения элемента в массив. Кроме того, это не сработает для NaN (например: [NaN].indexOf(NaN) === -1
)
Чтобы преодолеть это, ECMAScript 2017 представил метод includes для массива, чтобы проверить, присутствует ли элемент в массиве. В дальнейшем для проверки существования элемента вы можете использовать следующие
array.includes(element)
Это некоторые из наиболее принятых предложений, но на этапах 2 и 3 есть тонны интересных предложений, обеспечивающих многообещающие релизы впереди.
Доступность:
Спецификация по умолчанию доступна в Chrome и Edge 16 (Chakra), а Firefox очень скоро последует за ними.
** ИЗМЕНИТЬ **
Оператор возведения в степень и Array.prototype.includes были частью самой спецификации ECMAScript 2016.