Expresiones de función en JavaScript
En JavaScript, una función no es simplemente una característica especial del lenguaje, sino un tipo de valor fundamentalmente versátil.
La sintaxis más común para definir una función es la Declaración de Función:
function saludar() {
alert( "Hola" );
}
Sin embargo, también existe la Expresión de Función, que permite crear una función en el contexto de una expresión:
let saludar = function() {
alert( "Hola" );
};
En este caso, saludar
es una variable que contiene la función definida como function() { alert("Hola"); }
.
Una función en JavaScript es tratada como un valor. Podemos asignarla a variables, copiarla y pasarla como argumentos a otras funciones:
function saludar() {
alert( "Hola" );
}
let funcionSaludo = saludar; // Copiamos la función
funcionSaludo(); // Muestra "Hola"
saludar(); // También muestra "Hola"
Es importante notar que una función puede ser mostrada como su representación de cadena:
function saludar() {
alert( "Hola" );
}
alert( saludar ); // Muestra el código de la función
Cuando pasamos funciones como argumentos a otras funciones y las ejecutamos según sea necesario, las llamamos funciones callback. Por ejemplo:
function preguntar(pregunta, si, no) {
if (confirm(pregunta)) si();
else no();
}
function mostrarOk() {
alert( "Estás de acuerdo." );
}
function mostrarCancelar() {
alert( "Cancelaste la ejecución." );
}
preguntar("¿Estás de acuerdo?", mostrarOk, mostrarCancelar);
También podemos definir funciones anónimas usando Expresiones de Función directamente en el lugar donde las necesitamos:
preguntar(
"¿Estás de acuerdo?",
function() { alert("Estás de acuerdo"); },
function() { alert("Cancelaste la ejecución."); }
);
En resumen, una función en JavaScript es un valor que representa una acción. Mientras que las Declaraciones de Función se procesan antes de ejecutar el código principal, las Expresiones de Función se crean cuando el flujo de ejecución las alcanza. La elección entre Declaración de Función y Expresión de Función depende de la necesidad específica en el código.