Прочтите спецификацию c, связанную со страницы MDN. Пустой оператор "затронут", потому что ASI не будет выполнен, если вставленная точка с запятой приведет к пустому оператору.
Отказ от руки при возникновении ASI можно обойти, просто явно указав точку с запятой. Самая распространенная ошибка ASI - оператор return
, когда он пытается что-то вроде
return
{ propertyName: "something" };
Не делайте этого. Запустите инициализатор объекта в той же строке, что и return
.
Что касается разницы между точкой с запятой и пустым оператором: точка с запятой - это граница. В следующем коде:
var x; ;
Есть оператор объявления var
, затем пустой оператор. Вторая точка с запятой не является частью пустого оператора, но подразумевает, что является пустым оператором перед ним.