Explicar la sintaxis de la función anónima encapsulada
Resumen
¿Puede explicar el razonamiento detrás de la sintaxis para funciones anónimas encapsuladas en JavaScript? ¿Por qué funciona esto: (function(){})();
pero esto no: function(){}();
?
Lo que sé
En JavaScript, se crea una función con nombre como esta:
function twoPlusTwo(){
alert(2 + 2);
}
twoPlusTwo();
También puede crear una función anónima y asignarla a una variable:
var twoPlusTwo = function(){
alert(2 + 2);
};
twoPlusTwo();
Puede encapsular un bloque de código creando una función anónima, luego envolviéndola entre corchetes y ejecutándola inmediatamente:
(function(){
alert(2 + 2);
})();
Esto es útil al crear scripts modularizados, para evitar saturar el ámbito actual, o el ámbito global, con variables potencialmente conflictivas , como en el caso de los scripts de Greasemonkey, los complementos de jQuery, etc.
Ahora, entiendo por qué esto funciona. Los corchetes encierran el contenido y exponen solo el resultado (estoy seguro de que hay una mejor manera de describirlo), como con (2 + 2) === 4
.
Lo que no entiendo
Pero yo no entiende por qué esto no funciona igual de bien:
function(){
alert(2 + 2);
}();
¿Puedes explicarme eso?
Warning: Undefined property: agent_blog_content::$date_asked in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 32
Warning: Undefined property: agent_blog_content::$count_answers in /var/www/agent_etc/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 52