Funciones anónimas y autoejecutables en javascript
¿Sabías que en javascript una función puede contener a otras? Pues ahora ya lo sabes. Fíjate en el siguiente código:
function barrioSesamo() {
function epi() {
alert(‘hola Blas’);
}
function blas() {
alert(‘hola Epi’);
}
epi();
blas();
}
barrioSesamo();
// el navegador nos presentará un par
// de alertas, a saber, “hola Blas” y
// “hola Epi”
Nada impresionante, por el momento. Lo interesante del asunto es que, al definir la función `epi` dentro de la función `barrioSesamo`, el ámbito de la misma (scope) queda limitado, de manera que solo podemos llamar a `epi` desde su propio barrio.
Vale, sigo sin impresionarte.
¿Qué ganamos al definir funciones de esta manera? Al limitar el ámbito de la función, **evitamos colisiones** con (posibles) funciones del mismo nombre (posiblemente) definidas en otro(s) script(s).
Veamos ahora eso de las funciones anónimas:
function() {
alert(‘soy la función sin nombre’);
}
Queda claro: una función anónima es… efectivamente, una función que no tiene nombre. Y si no tiene nombre, ¿cómo demonios hacemos una llamada a la misma? Truco: haciendo que se ejecute por su cuenta.
(
function() {
alert(‘me ejecuto yo solita’);
}
)();
Fíjate bien en la sintaxis: la función va definida entre un par de paréntesis, a continuación de los cuales viene otro par, que utilizamos para **ejecutar la llamada**.
¿Aún impasible? Eres duro, tío. Quizá la traca final consiga impresionarte:
(
function() {
function hazCosasMaravillosasConElDOM() {
// lo que fuere
}
//addEvent() by John Resig
function addEvent( obj, type, fn ){
if (obj.addEventListener){
obj.addEventListener( type, fn, false );
}
else if (obj.attachEvent){
obj[“e”+type+fn] = fn;
obj[type+fn] = function(){ obj[“e”+type+fn]( window.event ); }
obj.attachEvent( “on”+type, obj[type+fn] );
}
}
// la función comienza a ejecutarse
// en la próxima línea
addEvent(window, ‘load’, hazCosasMaravillosasConElDOM);
}
)();
¿Lo pillas? Ahora tenemos un script **completamente encapsulado**, que se **ejecuta él solito** y que jamás de los jamases colisionará con otros scripts con los que le toque convivir.
El colmo de la **no intrusividad**.

Para los que no somos usuarios habituales de Linux, en este caso de Ubuntu, la siguiente guÃa nos puede ser de mucha utilidad para saber cómo instalar aplicaciones en esta distribución.