В Chrome
версии ^72
, если я запускаю следующее JavaScript
, ошибок нет.
{ prop: p } = { prop: 'prop' }
>> { prop: 'prop' }
Поэтому строка кода неожиданно интерпретируется как выражение выражения.
Но если я в конце запускаю тот же код с точкой с запятой, он запускается, как и ожидалось.
{ prop: p } = { prop: 'prop' };
>> Uncaught SyntaxError: Unexpected token =
Это ожидается, поскольку начальный {
сообщает механизму JavaScript
, что онблок кода, если мы не устраняем неоднозначность с помощью скобок.
Почему это происходит с точкой с запятой, но не без нее?