El propósito principal de un callback es ejecutar código en respuesta a un evento. Estos eventos pueden ser iniciados por el usuario, como los clics del ratón o el tecleo. Con un callback, puedes instruir a tu aplicación para que “ejecute este código cada vez que el usuario haga clic en una tecla del teclado”.
En el código de arriba, añadimosEventListener como una función y estamos pasando otra función callback como argumento. Y cuando se dispara un evento de clic el addEventListener registra la función callback.
Si quieres descargar datos de un servidor (lo que puede llevar mucho tiempo), sería un desperdicio que tu programa o función se quedara congelado mientras esperas a que se obtengan los datos. En su lugar, es una práctica común ejecutar la operación de obtención en segundo plano.
Esto implica que si tienes dos funciones seguidas, una de las cuales es asíncrona, la función B se ejecutará mientras la otra sigue en marcha. Si la función B depende de los datos que la función A está recuperando, tendrás problemas.
Como programador/desarrollador de software, usted escribe el código fuente para producir una salida basada en las entradas. Por lo general, se escriben funciones para realizar las tareas basadas en las entradas y producir una salida. Tenemos que asegurarnos de que estas funciones son,
Una función pura tiene todas las características anteriores. Es una función que produce la misma salida para la misma entrada. Significa que devuelve el mismo resultado cuando se le pasan los mismos argumentos. Una función pura no debería tener efectos secundarios que cambien la salida esperada.
¿Es una función pura? Bueno, no. La salida de la función depende ahora de un estado externo llamado saludo. ¿Qué pasa si alguien cambia el valor de la variable saludo a Hola? Cambiará la salida de la función sayGreeting() aunque se le pase la misma entrada.
Cualquier operación que no esté directamente relacionada con la salida final de la función se llama Efecto Secundario. Ahora veamos una función impura en la que mutamos la entrada y hacemos algo que no se supone que hagamos en una función pura.
La función anterior toma dos argumentos, una colección de usuarios (un array) y un elemento a encontrar en el array. Encuentra el elemento desde el final del array invirtiéndolo. Una vez que el elemento se encuentra en el array, establece ese valor como un texto a un elemento HTML utilizando métodos DOM.
La función cuadrado toma un parámetro, llamado número. La función consta de una sentencia que dice que se devuelva el parámetro de la función (es decir, number) multiplicado por sí mismo. La declaración return especifica el valor devuelto por la función:
Los parámetros se pasan esencialmente a las funciones por valor – así que si el código dentro del cuerpo de una función asigna un valor completamente nuevo a un parámetro que se pasó a la función, el cambio no se refleja globalmente o en el código que llamó a esa función.
Las expresiones de función son convenientes cuando se pasa una función como argumento a otra función. El siguiente ejemplo muestra una función map que debe recibir una función como primer argumento y un array como segundo argumento:
Un método es una función que es una propiedad de un objeto. Lee más sobre objetos y métodos en Working with objects.Calling functionsDefinir una función no la ejecuta. Definirla nombra la función y especifica qué hacer cuando se llama a la función.
Los argumentos de una función no se limitan a cadenas y números. Se pueden pasar objetos enteros a una función. La función showProps() (definida en Working with objects) es un ejemplo de función que toma un objeto como argumento.
Una función es un grupo de código reutilizable que puede ser llamado en cualquier parte de su programa. Esto elimina la necesidad de escribir el mismo código una y otra vez. Ayuda a los programadores a escribir códigos modulares. Las funciones permiten al programador dividir un programa grande en un número de funciones pequeñas y manejables.
Hasta ahora, hemos visto funciones sin parámetros. Pero hay una facilidad para pasar diferentes parámetros mientras se llama a una función. Estos parámetros pasados pueden ser capturados dentro de la función y cualquier manipulación puede ser hecha sobre esos parámetros. Una función puede tomar múltiples parámetros separados por comas.