Что нового в ES 2017

Что нового в ES 2017: Асинхронные функции JavaScript, улучшенные объекты и многое другое

От автора: описание важных новых функций ES 2017 JavaScript. Отступы строк, завершающие запятые. SharedArrayBuffer, Atomics и другие объекты. Примеры кода.

Давайте рассмотрим самые важные обновления ES 2017 JavaScript.

Процесс обновления

JavaScript (ECMAScript) — это постоянно развивающийся стандарт, реализуемый многими поставщиками на нескольких платформах. ES6 (ECMAScript 2015) был крупным релизом, которому потребовалось шесть лет для завершения. Был разработан новый годовой цикл релизов, чтобы упростить процесс и быстро добавлять новые функции.

В организации со скромным названием Технический комитет 39 (TC39) участвуют различные стороны, включая поставщиков браузеров, которые определяют продвижение предложений по JavaScript по определенной последовательности этапов:
Этап 0: strawman -

Первоначальное представление идей для новых или улучшенных функций ECMAScript.

Этап 1: предложение -

Формальный документ заявки, поддержанный хотя бы одним членом TC39, который включает примеры API, семантику языка, алгоритмы, потенциальные сложности, полифиллы и демонстрации.

Бесплатный курс «Full-Stack практика»

Изучите курс и создайте веб-приложение с нуля на JavaScript, NodeJS, ExpressJS

Получить курс

Этап 2: черновик -

Исходная версия спецификации функции. Требуются две экспериментальные реализации функции, хотя может быть в транспиллере, таком как Babel.

Этап 3: кандидат -

Спецификация предложения пересматривается, и получаются отзывы от поставщиков браузеров.

Этап 4: окончательный -

Предложение готово для включения в ECMAScript. Функцию следует считать стандартом только после достижения этой стадии. Однако на реализацию в браузерах и других платформах, например, Node.js, может потребоваться больше времени.

Если ES2015 был очень большим, то ES2016 был намеренно сделан крошечным, чтобы отладить процесс стандартизации. Были добавлены две новые функции:

Метод array.includes(), который возвращает true или false, когда значение содержится в массиве, и

Оператор экспоненции a ** b, который идентичен Math.pow(a, b).

Что нового в ES2017

Набор функций для ES2017 (или ES8 в старых терминах) считается первой большой поправкой к спецификации ECMAScript. Он предоставляет следующее…

Асинхронные функции

В отличие от большинства других языков JavaScript по умолчанию асинхронен. Команды, которые могут занять какое-то время, не останавливают выполнение. Это включает такие операции, как запрос URL-адреса, чтение файла или обновление базы данных. Должна быть передана функция обратного вызова, которая выполняется, когда результат этой операции известен.

Это может привести к аду обратных вызовов, когда последовательность вложенных асинхронных функций должна выполняться по порядку. Например:

В ES2015 (ES6) были введены Promises, которые предоставили более чистый способ выразить ту же функциональность. После того, как функции были промисифицированы, они могут быть выполнены с использованием:

Асинхронные функции ES2017 расширяются Promises, чтобы сделать асинхронные вызовы еще более чистыми:

await выполняет каждый вызов так, как будто он синхронный, но не задерживает ни один поток обработки JavaScript.

Асинхронные функции поддерживаются во всех современных браузерах (кроме IE или Opera Mini) и Node.js 7.6+. Они изменят способ написания JavaScript. Обратным вызовам, Promises и асинхронным функциям можно посвятить целую статью. К счастью, у нас таковая имеется! Посмотрите Управление потоком в современном JavaScript.

Object.values ()

Object.values () — это быстрый и более декларативный способ извлечения массива значений из пар имя-значение внутри объекта. Например:

Бесплатный курс «Full-Stack практика»

Изучите курс и создайте веб-приложение с нуля на JavaScript, NodeJS, ExpressJS

Получить курс

Вам больше не нужно писать цикл for … of снова! Object.values поддерживается во всех современных браузерах (кроме IE и Opera Mini) и Node.js 7.0+.

Object.entries()

Object.entries() возвращает массив из объекта, содержащего пары имя-значение. Каждое значение в возвращаемом массиве представляет собой подматрицу, содержащую имя (индекс 0) и значение (индекс 1). Например:

Это обеспечивает другой способ перебора свойств объекта. Его также можно использовать для определения Map:

Object.values поддерживается в большинстве современных браузеров (кроме IE, Opera Mini и iOS Safari) и Node.js 7.0+.

Object.getOwnPropertyDescriptors()

Метод Object.getOwnPropertyDescriptors() возвращает другой объект, содержащий все дескрипторы свойств (.value, .writable, .get, .set, .configurable, .enumerable).

Свойства непосредственно присутствуют в объекте, а не в цепочке прототипов объекта. Он похож на Object.getOwnPropertyDescriptor(object, property) — за исключением того, что возвращаются все свойства, а не только одно. Например:

Отступы строк padStart() и padEnd()

Функция отступа строк была неоднозначной в JavaScript. Популярную библиотеку left-pad убрали из npm после того, как она привлекла внимание юристов, представляющих одноименное приложение для обмена мгновенными сообщениями. К сожалению, она использовалось как зависимость в тысячах проектов, и Интернет сломался. npm впоследствии изменили рабочие процедуры, и left-pad была возвращена.

В ES2017 добавлена собственная функция отступа строк, поэтому нет необходимости использовать сторонний модуль. .padStart() и .padEnd() добавляют символы в начало или конец строки, соответственно, до тех пор, пока они не достигнут желаемой длины. Оба принимают минимальную длину и необязательную строку «fill» (пробел по умолчанию) в качестве параметров. Примеры:

.padStart () и .padEnd () поддерживаются во всех современных браузерах (кроме IE) и Node.js 8.0+.

Разрешены завершающие запятые

Небольшое обновление ES2017: завершающие запятые больше не вызывают синтаксическую ошибку в определениях объектов, объявлениях массивов, списках параметров функций и т. д.:

Завершающие запятые включены во всех браузерах и Node.js. Однако на момент написания статьи завершающие запятые в параметрах функций поддерживаются только в Chrome 58+ и Firefox 52+.

SharedArrayBuffer и Atomics

Объект SharedArrayBuffer используется для представления буфера исходных двоичных данных фиксированной длины, который может использоваться совместно с веб-рабочими. Объект Atomics обеспечивал предсказуемый способ чтения и записи в ячейки памяти, определенные SharedArrayBuffer.

Хотя оба объекта были реализованы в Chrome и Firefox, они были отключены в январе 2018 года в результате реакции на уязвимость Spectre.

Полную спецификацию ECMAScript 2017 можно найти на сайте ECMA International. Вы жаждете большего? В ES2018 анонсированы новые функции!

Автор: Craig Buckler

Источник: https://www.sitepoint.com/

Редакция: Команда webformyself.

Бесплатный курс «Full-Stack практика»

Изучите курс и создайте веб-приложение с нуля на JavaScript, NodeJS, ExpressJS

Получить курс

Курс по ES 6 (EcmaScript 6.0)

Прямо сейчас посмотрите курс по EcmaScript 6.0

Смотреть курс

Метки:

Похожие статьи:

Комментарии Вконтакте:

Комментарии Facebook:

Комментарии (1)

  1. jkeks

    ой смотри-ка че..
    теперь и в PHP7.3 и JS ES2017 прям запятую можно ставить в конце списка безбоязненно ))

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code class="" title="" data-url=""> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre class="" title="" data-url=""> <span class="" title="" data-url="">

Я не робот.

Spam Protection by WP-SpamFree