Javascript – #1.16. Funciones anónimas

Como podéis imaginar, las funciones anónimas no tienen nombre. Esto quiere decir que no es necesario acompañar la palabra function a un nombre de función.

Edu Consejo

Ya sabes que normalmente, cuando definimos una función, le asignamos un nombre y cero o más parámetros entre paréntesis; luego, para llamar a esa función indicamos el nombre y los parámetros (si los hubiera) entre paréntesis y esa función se ejecuta.

El uso de las funciones anónimas va mucho más allá: podemos asignarlas a variables, utilizarlas como parámetros de otra función, llamar a la función automáticamente en el momento que se define, etc.

Por tanto, a diferencia de la definición de función que vimos en la lección anterior, Funciones. Introducción, esta tendría este aspecto:

function (<parametros opcionales separados por comas>) {
        <instrucciones>
}

En este video verás cómo es la sintaxis de una función anónima, el constructor function y las funciones anónimas autoinvocadas. ¡Y más adelante verás cómo ponerlas en práctica con ejemplos reales!

¡Consulta en la pestaña Materiales el código fuente trabajado en la lección!

¿No te ha quedado claro? ¿Quieres aportar tu punto de vista? ¡Deja tu comentario!

¡Ups! ¡Este contenido está restringido a codelovers! Inicia sesión o, si aún no eres miembro de Didacticode, regístrate!

6 comentarios
Contraer comentarios

Hola Ada, llevo unos días haciendo este curso y me está encantando lo claro y conciso que lo explicas todo, pero en este vídeo me ha surgido una duda:

Si a una función anónima autoinvocada quisiéramos pasarle argumentos, ¿cómo podríamos hacerlo?

didacticode (Administrador) 10/10/2020 a las 09:31

¡Hola, Jaime!
Buena pregunta… la verdad es que las funciones anónimas autoinvocadas son un poco “peculiares” y, aunque puede parecer que no tienen mucha utilidad, se usan muchísimo en librerías como JQuery, por ejemplo.
Verás, para pasar parámetros deberás hacerlo en los paréntesis del principio, como si de una función normal se tratara; y para asignar el valor de estos, al final de la función autoinvocada puedes incluir también dos paréntesis: ahí es donde tendrías que pasar el valor de lo que quieras que se corresponda con el argumento. Por compatibilidad con versiones anteriores, te encontrarás que a veces se pasa un “undefined” en los paréntesis del principio. Que no te despiste eso.
Te pongo un ejemplo de cómo quedaría, para que sepas de lo que hablo:
(function(saludo, nombre){
console.log(saludo+”, “+nombre);
}(“Hola”, “Jaime”));

Hola Ada, puedo concluir que estás funciones no son tan anónimas? Lo digo por qué las puedo invocar atraves de una variable, si? Gracias

didacticode (Administrador) 23/04/2021 a las 22:59

¡Hola, Diego!
¡Buena pregunta, jejeje! Pero no exactamente, las funciones siguen siendo anónimas porque no les das ningún nombre. Realmente después de la palabra “function” no las nombras, por lo que por eso se denominan anónimas.
Otra cosa es que decidas invocarlas en algún momento dado y para eso las asignes a una variable. Es la variable la que tiene el nombre pero no la función.
Entiendo que el resultado final parece ser el mismo porque utilizas un nombre para llamar a una función, pero no es exactamente igual (hablamos de aspectos como el ámbito de las mismas).
En este artículo puedes encontrar información al respecto que creo que te puede aclarar: https://www.linkedin.com/pulse/javascript-named-vs-anonymous-functions-chris-ng/
¡Echa un ojo y cualquier duda, ya sabes dónde encontrarme!

Hola Ada! Me encanta tu curso, muchas gracias por lo que haces!!.

Tengo una inquitud, en el minuto 2:27 porqué en lugar de guardar el resultado de producto (3, 6) en otra variable y luego mostrar la alerta con esa segunda variable, porqué no muestras una alerta de producto con dichos parámetros, es decir así:

var producto = function (a, b) { return a * b;};
alert (producto(3, 6));

Gracias!

didacticode (Administrador) 30/03/2022 a las 07:51

¡Hola, Lina María!
Pues verás, es mucho más rápido hacerlo como tú propones y, de hecho, yo lo haría así porque no necesitas una variable para guardar el resultado.
A veces hago demasiados pasos para que se entienda “paso a paso” cómo se obtienen ciertas cosas. Pero en realidad no serían necesarios, así que mucho mejor como tú has propuesto
(Y en lugar de var, utilizaría “const”, ahora que tenemos Javascript ES6 y posteriores)

Deja un comentario