EcmaScript 10 — JavaScript в этом году (ES2019)
Содержание
Стандартизация JS перешла на годичный цикл обновлений, а начало года — отличное время для того чтобы узнать, что нас ждёт в юбилейной — уже десятой редакции EcmaScript!
На сегодняшний день в Stage 4 # — всего несколько предложений.
Автор фото: kasper.green; Жёлтый магнит: elfafeya.art kasper.green
Содержание
Пять стадий #
Stage 4 — Final #
Stage 3 — Pre-release #
Итоги #
Пять стадий
Stage 0 ↓ Strawman Наметка Идея, которую можно реализовать через Babel-плагин.;
Stage 1 ↓ Proposal Предложение Проверка жизнеспособности идеи.;
Stage 2 ↓ Draft Черновик Начало разработки спецификации.;
Stage 3 ↓ Candidate Кандидат Предварительная версия спецификации.;
Stage 4 ֍ Finished Завершён Финальная версия спецификации на этот год.
Мы рассмотрим только Stage 4 — де-факто, вошедший в стандарт.
И Stage 3 — который вот-вот станет его частью.
֍ Stage 4
Эти изменения уже вошли в стандарт.
Необязательный аргумент у catch
До ES10 блок catch требовал обязательного аргумента для сбора информации об ошибке, даже если она не используется:
Edge пока не обновлён до ES10, и ожидаемо валится с ошибкой
Начиная с редакции ES10, круглые скобки можно опустить и catch станет как две капли воды похож на try .
Мой Chrome уже обновился до ES10, а местами и до Stage 3. Дальше скриншоты будут из Chrome
Доступ к описанию символьной ссылки
Описание символьной ссылки можно косвенно получить методом toString():
Начиная с ES10 у символов появилось свойство description, доступное только для чтения. Оно позволяет без всяких танцев с бубном получить описание символа:
В случае если описание не задано, вернётся — undefined :
Строки EcmaScript совместимые с JSON
EcmaScript до десятой редакции утверждает, что JSON является подмножеством JSON.parse , но это неверно.
JSON строки могут содержать неэкранированные символы разделителей линий U+2028 LINE SEPARATOR и абзацев U+2029 PARAGRAPH SEPARATOR .
Строки ECMAScript до десятой версии — нет.
Если в Edge вызвать eval() со строкой "\u2029" ,
он ведёт себя так, словно мы сделали перенос строки — прямо посреди кода:
C ES10 строками — всё в порядке:
Доработка прототипного метода .toString()
уточнить «функционально эквивалентное» требование;
стандартизировать строковое представление встроенных функций и хост-объектов;
уточнить требования к представлению на основе «фактических характеристик» объекта;
убедиться, что синтаксический анализ строки содержит то же тело функции и список параметров, что и оригинал;
для функций, определенных с использованием кода ECMAScript, toString должен возвращать фрагмент исходного текста от начала первого токена до конца последнего токена, соответствующего соответствующей грамматической конструкции;
для встроенных функциональных объектов toStringне должны возвращать ничего, кроме NativeFunction;
для вызываемых объектов, которые не были определены с использованием кода ECMAScript, toString необходимо вернуть NativeFunction;
для функций, создаваемых динамически (конструкторы функции или генератора) toString, должен синтезировать исходный текст;
Источник: