Недавно были выпущены спецификации 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.