EcmaScript 10 — JavaScript в этом году (ES2019)

Содержание

Стандартизация JS перешла на годичный цикл обновлений, а начало года — отличное время для того чтобы узнать, что нас ждёт в юбилейной — уже десятой редакции EcmaScript!

На сегодняшний день в Stage 4 # — всего несколько предложений.

КДПВ: Жёлтый магнит с надписью «JS ES10» на экране монитора — от kasper.green  elfafeya.art
Автор фото: kasper.green; Жёлтый магнит: elfafeya.art kasper.green

Содержание

Пять стадий #

Stage 4 — Final #

Stage 3 — Pre-release #

Итоги #

Пять стадий

Stage 0Strawman Наметка Идея, которую можно реализовать через Babel-плагин.;

Stage 1Proposal Предложение Проверка жизнеспособности идеи.;

Stage 2Draft Черновик Начало разработки спецификации.;

Stage 3Candidate Кандидат Предварительная версия спецификации.;

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, должен синтезировать исходный текст;


Источник: habr.com