En todos los lenguajes de programación las cosas ocurren dentro de funciones. Son bloques de código autocontenido (tiene su propio contenido independiente al scope o ámbito global) que se van a definir una sóla vez y se pueden ejecutar en cualquier momento. Se reutiliza todas las veces que queramos.

Las funciones pueden o no recibir parámetros y pueden devolver o no valores.

Son un objeto, en el argot de Javascript, se dice que son ciudadanos de primer orden, son realmente poderosas, las podemos asignar como valor, se puede retornar la función de una función adicional, se puede pasar como argumento. Desde ES6 son muy poderosas. Un caso especial son las funciones flecha o Arrow Function.

Declaración de funciones

Para declarar una función hay dos maneras:

  • Funciones declaradas
  • Funciones expresadas

Función declarada

Utilizamos la palabra function, siempre va a llevar paréntesis y sus llaves, donde está el cuerpo de la función. Le tenemos que dar un nombre.

Ejm

// DECLARAMOS UNA FUNCIÓN
function estoEsUnaFuncion(){
console.log(1);
console.log(2);
console.log(3);
};

// LLAMAMOS A UNA FUNCIÓN (INVOCACIÓN DE FUNCIONES)
estoEsUnaFuncion();

Los paréntesis indican que una función se va a ejecutar. Se ejecutan las acciones.

Nota: Cuando el compilador encuentra return, retorna el valor de return y no sigue ejecutando código, lo anterior sí, pero lo posterior no.

Aceptar parámetros

Una función puede aceptar parámetros.

Ejm

// DECLARACIÓN DE FUNCIÓN
function saludar(nombre = "Francisco", edad = 51){
console.log(`Hola ${nombre} con edad ${edad}`);
};

// INVOCACIÓN DE FUNCIÓN
saludar("Francisco", 39);

Si no le pasamos parámetros nos da un valor undefined. A los parámetros les podemos pasar valores para que no nos de valores undefined.

Funciones declaradas VS funciones expresadas

Las funciones declaradas son las que hemos visto más arriba, las expresadas son las que guardamos en una variable. El problema de la función declarada es el hoisting. Lo que hace Javascript es elevar automáticamente dicha función, tal como le pasa con las variables declaradas con var. En las funciones expresadas la función se crea como una expresión, guardándola en una variable.

Utilizaremos la palabra reservada const para guardar funciones.

Funciones anónimas

La función del ejm de más abajo es lo que se denomina una función anónima.

Ejm

// FUNCION ANÓNIMA
const funcionExpresada = function(){
console.log("Esto es una función expresada, es decir, una función
que se le ha asignado como valor a una variable, si invoco esta
función antes de su declaración, Javascript nos dará error");
};

Ordenamiento de código

Como con anterioridad dijimos, y como recordatorio, el código se debe ordenar de la siguiente manera.

  • Importación de módulos
  • Declaración de variables
  • Declaración de funciones
  • Ejecución de código

El estilo de función expresada está siendo más usado, hace que evitemos errores de compilación por tener mal acomodado nuestro código.