Речь идет не о пробелах, а об автоматической вставке точек с запятой с помощью JavaScript.
Спецификация ECMAScript гласит
Некоторые операторы ECMAScript (пусто
оператор, переменная оператор,
выражение выражения, сделай пока
заявление, продолжить заявление, перерыв
утверждение, возврат заявления и бросок
заявление) должен быть прекращен с
точка с запятой. Такие точки с запятой могут всегда
появляются явно в исходном тексте.
Для удобства, однако, такие
точки с запятой могут быть опущены
исходный текст в определенных ситуациях.
Эти ситуации описаны
говоря, что точки с запятой
автоматически вставляется в источник
Поток токена кода в этих ситуациях.
Это означает, что ваш код
var FOO = (function($)
{
return
{
init: function()
{
}
}
})(jQuery);
переводится как
var FOO = (function($)
{
return; // <- JavaScript will insert a semicolon here.
{
init: function()
{
}
}
})(jQuery);
Таким образом, FOO будет неопределенным после выполнения функции.
Для вашего другого кода: JS не будет вставлять точку с запятой и будет работать правильно JS вставит точку с запятой после вашего литерального объекта, и она должна работать нормально. [РЕДАКТИРОВАТЬ: Исправление, как указано kagnax]
Это означает, что вы всегда должны заканчивать свои утверждения точкой с запятой. Разрешение вставки точки с запятой в движок JS может привести к очень тонким ошибкам, отладка которых займет несколько часов. Вы можете использовать такой инструмент, как JSLint , который предупредит вас о пропущенных точках с запятой.