Para ejecutar un bloque de instrucciones y realizar una tarea concreta, JavaScript utiliza las “funciones“, para agruparlas.
Para definir cada bloque (función), se le asigna un nombre. Cuando se quiera ejecutar ese bloque, se indica el nombre del bloque (función) correspondiente.
Sintaxis:
function nombre-de-la-función ()
{
//Grupo de instrucciones que realizará la función
}
Llamada a la función:
nombre-de-la-funcion ()
<!DOCTYPE html> Concluyamos con un ejemplo. Vamos presentar en una ventana emergente, el área de un triángulo, que me devolverá la función de nombre “areaTri”, a la que le pasaremos las dimensiones “base” en una variable y “altura” directamente con el valor 5. Los comentarios, en verde, ayudarán a comprender cada línea del código. Observa que las variable “base” y el dato “5” son los parámetros que le pasamos a la función, sin embargo, la función espera las variables “a” y “b”. ¿Que significa esto?. Pues que tanto “a” como “b” quedan definidas como variables locales para la función “areaTri” y se les asignan los valores en el mismo orden que los entrega la llamada a la función; es decir, a la variable local “a” se le asigna el valor de la variable global “base” y a la local “b”, el dato “5”. Funciones anónimasHemos visto que una función debe tener un nombre para poderla llamar con posterioridad. Pues bien, una función anónima es aquella que, efectivamente, NO tiene nombre. Sintaxis: function () Queda claro que no tienen nombre. Llamada a la función: ¿Cómo podemos llamarla si no tiene nombre?, pues utilizándola toda ella como si fuera el nombre; es decir, encerrándola entre paréntesis y colocándole otro par de paréntesis al final. De esta forma, se autoejecutará. Se define y ejecuta al mismo tiempo. (function(){ })(); ¿Que ventajas tiene esto?. Básicamente dos:
El ejemplo más claro que me viene a la mente es la forma de comenzar a trabajar con jQuery. No lo hace hasta que el DOM esté preparado, para así evitar errores al acceder a un elemento que todavía no estuviera “listo” (ready). $(Document).ready(function(){ Como puedes observar, “function” no lleva nombre y es la respuesta al evento “ready” de la página Web “Document”. Así podríamos seguir encapsulando todo lo que necesitáramos, con las ventajas ya comentadas.
<!DOCTYPE HTML> Analiza y prueba antes este ejemplo. Igual te saca de dudas. He tratado de hacerlo lo más completo posible. Te pongo todo el código a continuación. Si visitamos sitios sobre jQuery podremos comprobar que la sintaxis empleada es mucho más compacta que todos los ejemplos que venimos viendo. El objetivo de este tutorial es aprender jQuery de una forma sencilla, pero estaría inconcluso si no introducimos la forma más habitual de programar con jQuery (funciones anónimas y encadenamiento de llamadas con el objeto jQuery) Veamos como se organiza nuestro código utilizando funciones anónimas. Problema:Confeccionar una página que muestre dos títulos de primer nivel, al ser presionados cambiar el color de fuente, fondo y la fuente del texto. pagina1.html <!DOCTYPE html> <html> <head> <title>Ejemplo de jQuery</title> <meta charset="UTF-8"> </head> <body> <h1 id="titulo1">Primer título</h1> <h1 id="titulo2">Segundo título</h1> <script src="https://code.jquery.com/jquery-3.4.1.min.js"></script> <script src="func30.js"></script> </body> </html> func30.js let x = $(document); x.ready(function () { let x = $("#titulo1"); x.click(function () { let x = $("#titulo1"); x.css("color", "#ff0000"); x.css("background-color", "#ffff00"); x.css("font-family", "Courier"); }); x = $("#titulo2"); x.click(function () { let x = $("#titulo2"); x.css("color", "#ffff00"); x.css("background-color", "#ff0000"); x.css("font-family", "Arial"); }); }) Como podemos observar el código a quedado mucho más compacto. Normalmente uno utiliza funciones anónimos cuando el algoritmo contenido en la función solo se requiere para dicho evento. La sintaxis para definir una función anónima: x.ready(function(){ ...... }) Como vemos llamamos al método ready y entre paréntesis incluimos la función tal como las venimos implementando en conceptos anteriores pero sin nombre. También es interesante ver que podemos disponer otras funciones anónimos dentro de una función anónima: x.click(function () { ...... }); |