Автоматическая вставка точки с запятой в Javascript для операторов do-while

Начиная с ES6, новый регистр был добавлен для правила 1 автоматической вставки точки с запятой:

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

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

do {} while (false) var a = 42

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

1 ответ

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

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

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

Другие вопросы по тегам