# Callback: ¿qué son las funciones callback?

JavaScript es uno de los lenguajes más populares para crear sitios web. Las posibilidades que ofrece este lenguaje de secuencias de comandos se aprovechan para **diseñar páginas interactivas** que sean capaces de **reaccionar a las solicitudes**. Para ello, se emplean variables, objetos y funciones en el marco del lenguaje. Todos ellos pueden recurrir los unos a los otros y siempre reflejan el mismo resultado en diferentes navegadores. Detrás de la mayoría de los botones o las pantallas de contenido que aparecen en un momento determinado en los sitios web, se encuentra una función *callback*.

Sin embargo, las funciones de este tipo no son exclusivas de JavaScript: otros lenguajes de programación conocidos, como C, Java, PHP o Python, también utilizan el *callback* para pasar ciertos **parámetros de usuario** de la forma más fácil.

## ¿Qué es un callback?

Las funciones siempre se referencian a determinados parámetros. Si asignas **una función como parámetro a otra función**, hablaremos de un *callback*. Las funciones *callback* suelen utilizarse mucho en bibliotecas y *frameworks*, como las aplicaciones JavaScript [jQuery](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/jquery-tutorial-de-integracion-y-primeros-pasos/ "jQuery: tutorial de integración y primeros pasos"), [Angular](https://angular.io/ "Pagina oficial de Angular") o [node.js](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/introduccion-a-nodejs/ "Introducción a Node.js"). Estas aplicaciones son adecuadas para **crear funciones extensibles** y se ejecutan únicamente después de que tenga lugar otro evento o circunstancia.

## ¿Cómo funciona un callback?

La función *callback* siempre tiene un **efecto determinado que está relacionado con ciertas circunstancias**. En otras palabras, solo se invoca si ha tenido lugar otra acción claramente definida. Un buen ejemplo de función *callback* son los controladores de eventos, que se utilizan, por ejemplo, en **elementos HTML** como los botones. El evento podría ser un clic del ratón que hace que se ejecute el *callback*, y la función en sí misma podría provocar el **redireccionamiento** a otra página o transmitir un valor que se haya introducido en un formulario.

La principal diferencia entre una función normal y un *callback* sería la siguiente: si bien una función normal se ejecuta directamente, la función ***callback* solo se define** y se llama y ejecuta únicamente cuando ocurre un evento concreto. Como hemos mencionado, las funciones *callback* se utilizan en numerosos lenguajes de programación y, aunque la sintaxis y la estructura de los métodos difieren, sus principios se mantienen en todos los lenguajes.

### Función callback en JavaScript

Las funciones *callback* son ampliamente utilizadas en la programación con JavaScript. Puede tratarse, por ejemplo, de una función que se ejecuta al pulsar un botón o de algún contenido relacionado con una función *setTimeout ()*, que provoca un retraso de tiempo.

Un ejemplo simple de un *callback* en JavaScript sería un botón común y corriente:

```none
document.getElementById("Button1").addEventListener("click", function() {
console.log("Se ha pulsado el botón");
}, false);
```

En este ejemplo, se utiliza un *EventListener* como *callback* que se activa cuando se produce un determinado evento; en este caso, hacer clic en el botón identificado como “Button1”. En cuanto se hace clic en el botón y se cumplen las **condiciones para la función *callback***, esta se ejecuta y el terminal emite el mensaje “Se ha pulsado el botón”. Para garantizar la compatibilidad con versiones anteriores del navegador, en el ejemplo también se utiliza el parámetro “false”.

### Función callback en PHP

En PHP, las funciones *callback* se ejecutan de manera similar a JavaScript. Sin embargo, en este lenguaje de secuencias de comandos, las funciones *callback* también pueden ser **métodos de un objeto**, incluidos los métodos de clase estática.

Este sería un ejemplo de una función clásica de *callback* en PHP:

```none
function my_callback_function() {
	echo '¡Hola, mundo!';
}
```

Al llamar esta función, se genera el *string* “¡Hola, mundo!”. Para ejecutar al ***callback* como método**, procede de la siguiente manera:

```none
class MyClass {
	static function myCallbackMethod() {
		echo '¡Hola, mundo!';
	}
}
```

En PHP, los *callbacks* son un método muy utilizado para que las **funciones se comuniquen entre sí**. Suelen emplearse para implementar ***plugins* o módulos** de manera limpia y para garantizar su funcionalidad.

### Funciones callback en Python

Python es uno de los lenguajes de programación más populares debido a su simple sintaxis. Gracias a la versatilidad que ofrece, tanto en *software*, como en *hardware*, este lenguaje es perfecto para iniciarse en la programación. Se utiliza especialmente en los ámbitos de la ciencia de datos y el aprendizaje automático y presenta muchas ventajas sobre otros lenguajes.

En Python, el *callback* se utiliza principalmente para **asignar diferentes eventos a elementos de la interfaz de usuario**. En el siguiente ejemplo, se definen dos funciones, es decir, el *callback* “get\_square” y la llamada “caller”. Finalmente, se ejecuta el *callback*:

```none
>>> def get_square(val):
		return val ** 2
>>> def caller(func, val):
		return func(val)
>>> caller(get_square, 5)
```

La sintaxis de la función *callback* es muy sencilla, **similar a la de JavaScript y PHP**.

### Funciones callback en Java

Es bastante inusual ejecutar una función *callback* en Java. Técnicamente, se puede hacer, pero requiere la función de **reflexión**. Con esta función se establecen métodos y funciones que se procesan en objetos. Por consecuencia, la función de reflexión es más una función de biblioteca que un *callback*.

El **principio SAX** también funciona de manera similar a la función *callback* en Java. En este caso, el analizador SAX lee un archivo XML y llama a algún método de *callback* concreto en función del evento entrante. Entre ellos, se incluyen los métodos startDocument() y startElement().

### Funciones callback en C

En el lenguaje de programación C, las funciones *callback* pueden incorporarse de manera similar a JavaScript. Este lenguaje, que suele utilizarse para programar sistemas y aplicaciones, es una parte integral de la programación de núcleos de sistemas y sistemas operativos. Muchos lenguajes de programación, como JavaScript, PHP, C++, Java o C#, se basan mucho en la sintaxis y las propiedades de C. Por lo tanto, la sintaxis y los métodos de los diferentes lenguajes también coinciden en muchos aspectos.

Este sería un ejemplo de función *callback* en C:

```none
void A()
{
	printf("Soy una función A\n");
}
// La función callback
void B(void (*ptr)())
{
	(*ptr) (); // Aquí se invoca el callback de A
}
int main()
{
	void (*ptr)() = &A;
	// Se ejecuta la función B
	// La función A se pasa como argumento
	B(ptr);
	return 0;
}
```

En consecuencia, la salida de este código es: “Soy una función A”. Al igual que en JavaScript, las funciones *callback* siempre se ejecutan cuando ocurre un evento determinado. En C, estas funciones se utilizan para crear diversas bibliotecas nuevas para el desarrollo posterior de los programas y para **generar** **señales desde el núcleo** necesarias a la hora de gestionar eventos asíncronos.


This is a markdown version of: [https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/que-es-un-callback/](https://www.ionos.mx/digitalguide/paginas-web/desarrollo-web/que-es-un-callback/) for AI/LLM consumption.