No se trata de espacios en blanco, se trata de inserción automática de punto y coma por JavaScript.
especificación ECMAScript dice
Algunas de las declaraciones de ECMAScript (vacío declaración, declaración de variables, declaración de la expresión, do-while declaración, sentencia continue, romper declaración, sentencia de retorno, y tirar declaración) debe terminar con punto y coma. Tales puntos y comas siempre pueden aparecer de forma explícita en el texto fuente. Para mayor comodidad, sin embargo, tales puntos y comas pueden omitirse del texto de origen en ciertas situaciones. Estas situaciones están descritas por diciendo que los puntos y comas son que se insertan automáticamente en la fuente del código fuente en esas situaciones.
Esto significa que el código
var FOO = (function($)
{
return
{
init: function()
{
}
}
})(jQuery);
se traduce como
var FOO = (function($)
{
return; // <- JavaScript will insert a semicolon here.
{
init: function()
{
}
}
})(jQuery);
Así FOO será indefinido después de que se ejecute la función.
Para su otro código,
JS no insertará ningún punto y coma y funcionará correctamente
JS insertará punto y coma después de su objeto literal y debería funcionar bien. [EDITAR: Corrección según lo señalado por kagnax]
Esto significa que siempre debe terminar sus declaraciones con punto y coma. Dejar que el motor de JS inserte un punto y coma puede introducir errores muy sutiles, lo que llevaría horas depurar. Puede usar una herramienta como JSLint que le avisará si falta el punto y coma.
posible duplicado de [¿Cuáles son las reglas para la inserción automática de punto y coma de Javascript (ASI)?] (Http://stackoverflow.com/q/2846283/1048572) – Bergi
@Bergi técnicamente esa pregunta sería un duplicado de esta, desde que llegó primero;) Pero el énfasis y la "capacidad de búsqueda" son diferentes (por ejemplo, no quiero que se elimine esta pregunta) – drzaus
@drzaus: los cierres duplicados no necesitan seguir estrictamente un orden temporal; tenemos muchas preguntas canónicas que fueron más tarde, pero con respuestas de mayor calidad :-) Tenga en cuenta que solo quería vincular esa publicación relacionada y muy relevante (no es un engaño exacto), no cerré esta pregunta (vote para cerrarla). Además, las preguntas cerradas no se eliminan. – Bergi