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**.
Cron es una utilidad de sistema que sirve para lanzar procesos con una periodicidad determinada, como por ejemplo 
Algo que nos gusta hacer en Sentido Web es explicar cómo se hacen las cosas, no solo mostrar scripts que encontramos o que inventamos, para asà que quienes estén interesados, puedan aprender cómo hacerlo ellos mismos.