Funciones en Javascript.
Cuando hablamos de funciones, nos viene a la mente aquel concepto matemático, donde a partir de una entrada obtenemos un resultado procesado.
En programación el concepto de función tiene cierta similitud, en cuanto a que tenemos una entrada (parámetros) y obtenemos un resultado (retorno de la función), adicionalmente tenemos que decir que una función es un bloque código, que podemos ejecutar tantas veces necesitemos, de tal forma que hablamos de reutilización de recursos.
Con la premisa anteriormente indicada, hablemos ahora de funciones en Javascript, las cuales serán bloques de código que recibiran parámetros y retornaran un resultado.
Como declaramos una función en Javascript?
Existen múltiples formas declarar funciones y cada una tiene sus particularidades, veamos cuales son:
Declaración de función
Es la forma más simple y tradicional de declarar o definir una función, su anatomía sigue a continuación:
function <nombreFuncion> (<parametro1>,<parametro2>,...) {
...Bloque de código
return <resultado>;
}
Expresión de función
En Javascript tenemos la particularidad de que podemos tratar las funciones como una variable cualquiera, entonces tomando esta afirmación, veamos como podemos expresar una función:
//Observa que se declara similar a una variable
const <nombreFuncion> = function(<parametro1>,<parametro2>,...) {
return <resultado>;
}
Función de flecha o arrow function
Similar al caso anterior, una función de flecha se declara como una expresión de función, pero con la particularidad de no tener que usar la palabra reservada function, además de tener un par de características adicionales:
- Si es posible realizar el proceso en una sola línea, no es necesario usar { } ni la palabra reservada return.
- No tiene contexto de variables
//Es similar a una expresión de función
const <nombreFuncion> = (<parametro1>,<parametro2>,...) => {
...
return <resultado>;
}
Arrow function en una línea
//Es similar a una expresión de función
const <nombreFuncion> = (<parametro1>,<parametro2>,...) => <resultado>;
IIFE (Immediately Invoked Function Expression)
Son funciones que no tienen nombre (anónimas) y que se ejecutan al momento de declararse, a diferencia de las anteriores, que separan los procesos de declaración y de ejecución. Su sintaxis sigue la siguiente anatomía:
( function () {
let texto = 'Esta es una función de tipo IIFE';
return `Función con resultado: ${texto}`
})()
Function constructor
Otra particularidad que Javascript nos ofrece es tener un tipo de dato para identificar las funciones, el tipo Function
como lo vimos en el texto de Tipos de Datos de Javascript.
Ahora bien, cómo declaramos una función siguendo esta sintaxis?, veamos:
const <nombreFuncion> = new Function('parametro1', 'parametro2', ... ,
'return <Codigo de la funcion>'
);
Es importante destacar en este tipo de declaración, que tanto los parámetros (los que sean necesarios) y el código de la función se pasan como cadena de caracteres (encerrados entre comillas) y es la clase Function
la que a partir de esos datos construye y devuelve una variable de tipo Function
Ahora que sabemos como declarar funciones, usemos la forma más útil en cada caso según nuestras necesidades!