Компрессор удаляет его, чтобы сохранить отправляемые байты (меньший размер файла / более быстрая загрузка).
Причиной проблем могут быть дополнительные точки с запятой, например,
function a() {
return // <-- semi colon is inserted here, terminating the line.
{
abc: '???'
}
}
alert(a()); // undefined
Я всегда явно добавляю свои точки с запятой и делаю отступ в стиле BSD KNF .
Не беспокойтесь о том, что делает компрессор - если ваш код работает нормально, все хорошо.
Обновление
Pst указывает в комментариях (ура), что ASI не является проблемой выше - грамматика return
предполагает, что значение будет сразу после него. Тем не менее, я думаю, что ASI все еще может быть проблемой - если каждый \n
получает ;
, предшествующий ему автоматически.
Я привел еще один пример того, как ASI является PITA.
var a = function(b) {
b.call();
};
(function() {
c = 'hello',
a
(function() {
alert('hello')
})
})();
См. На jsFiddle .
Код выглядит довольно глупо (почему там переменная a
)?
Новичок может не знать о var
переменных области видимости и может создать список из двух переменных, подобных этой. Затем они могут заключить функцию в скобки (этот человек все еще учится:)).
В приведенном выше примере функция будет отправлена на a()
и выполнена.