Traductor



Funciones anónimas

Las funciones que hemos visto en las publicaciones anteriores, han sido formalmente definidas. Como sea, JavaScript no requiere la definición formal de una función para poder emplearas.
Además, la utilidad de este tipo de funciones es muy variada.
Algunos de los posibles usos de las funciones anónimas son:
  • La consideración de que todo es un objeto:
    • Esto permite asignar funciones a variables
    • Lo cual nos permite hacer referencias a dichas funciones, utilizando la variable.
    • Ademas nos permite pasar funciones como argumentos a otras funciones. De esto, podemos obtener funciones como resultados de la ejecución de una función.
  • Gracias a los Closures, tenemos la ventaja de poder enlazar nuestras funciones con variables de otros entornos de ejecución
    • Esto nos será de gran utilidad a la hora de trabajar con interfaces web.
  • Podemos crear comportamiento dinámico a la hora de modificar el comportamiento de un objeto en particular, podemos definir una función y asignarla inmediatamente a un método de un objeto, sobrescribiendo su comportamiento inicial, o extendiendo su interfaz para agregar comportamiento nuevo.
Veremos mucho mas de JavaScript, cuando entremos a "Objetos en JavaScript".

Una función anónima se puede definir sin que sea asiganada a ninguna variable:
function(quien) {
    alert("hola "+quien)
}
Sin embargo, hacer esto es completamente inútil: definir una función sin nombre hace que sea imposible ser ejecutada más tarde, pues sin un nombre con el que acceder a ella es imposible encontrarla. Pero podemos ejecutarla en el mismo momento en el que la definimos. Para ello, solo tenemos que encerrar entre paréntesis, y después usar unos nuevos paréntesis con los parámetros, como hacemos con una función normal.
(function() { alert("hola mundo") })()
Por supuesto, podemos pasarle parámetros a nuestra función autoejecutable. En el siguiente ejemplo, se pasa como parámetro “mundo” a la función:
(function(quien) {
    alert("hola "+quien)
})("mundo")
Puede parecer poco útil hacer esto ahora, pero más adelante veremos como es una fantástica manera de arreglar ciertos problemas. 

Por supuesto, una función puede devolver una función anónima. Sera responsabilidad del programador asignarla a una variable:

function saludator(quien) {
    return function() {
        alert("hola "+quien)
    }
}
var saluda = saludator("mundo")
saluda()
O podemos ejecutar la función que se ha retornado directamente, sin asignarla a ninguna variable:
function saludator(quien) {
    return function() {
        alert("hola "+quien)
    }
}

saludator("mundo")()
Claro, nadie te impide sobreescribir una función con otra.
function saludator(quien) {
    return function() {
        alert("hola "+quien)
    }
}
saludator = saludator("mundo")
saludator()
Aquí, la primera vez que ejecutamos saludator(“mundo”) nos retorna una función anónima (que muestra “hola mundo”). Esta función es asignada a la variable saludator, por lo que la segunda vez que llamemos saludator(), estamos ejecutando la nueva función anónima (la del “hola mundo”), y la función inicial original se pierde para siempre.

Si te hemos ayudado : )

Te agradeceríamos que apoyaras este proyecto



No se te olvide Comentar y Compartir
en:
                          

0 comentarios:

Publicar un comentario