Javascript automati c вставка точек с запятой для операторов do-while - PullRequest
2 голосов
/ 26 апреля 2020

После ES6 был добавлен новый случай для правила 1 из automati c вставка точки с запятой :

Предыдущий токен есть), и вставленная точка с запятой будет анализируется как завершающая точка с запятой оператора do-while (13.7.2).

Это позволяет избежать завершения строки и написать некрасивый код, такой как:

do {} while (false) var a = 42

Что обоснование этого правила? Какой-нибудь полезный вариант использования?

1 Ответ

2 голосов
/ 26 апреля 2020

Я почти уверен, что "case", добавленное в ES2015, предназначено только для стандартизации правил, которые браузеры уже реализовали , чтобы быть совместимыми с ужасно написанными (или странно минимизированными) скриптами. Это была не просто новая функция, а то, что она была изменена в спецификации, чтобы соответствовать тому, что уже делали браузеры.

Например, ваш фрагмент работает в IE11 , который был выпущен в 2013 году:

do {} while (false) var a = 42;
console.log('no parse errors');
...