JavaScript - Funciones

JavaScript - Funciones

En programación, una función es una sección del programa que se ejecuta de manera independiente del resto del programa. Una función posee 3 componentes importantes:

  • Parámetros, son los valores que recibe la función como entrada.
  • El código de la función, que son las operaciones que hace la función.
  • El resultado (o valor de retorno), que es el valor final que entrega la función.

Por ejemplo:

function sumar(a, b) {
   let resultado = a + b;
   return resultado
}

Donde "function" es la palabra reservada para declarar la función "sumar" es el identificador de la función (a, b) son los parámetros que le pasamos a la función, dentro de los {} están las operaciones y por ultimo con la palabra reservada "return" devolvemos el valor final que entrega la función.

En JavaScript tenemos dos tipos de funciones, las funciones declarativas (function statement o declaration) y las funciones anónimas (function expression o funciones de expresion).

Funciones declarativas

Se escriben con la palabra reservada function al inicio:

function saludar(nombre) {
    console.log(`Hola ${nombre}`);
}

saludar('Diego'); // Output: "Hola Diego"

Funciones anónimas

Son funciones que no poseen nombre y estas pueden ser asignadas a una variable

let variable = function (a,b) {
  return a + b
}

variable (3, 2); // Output: 5

Funciones anónimas con el constructor Function

let miFuncion = new Function ("a", "b", "return a + b");
let resultado = miFuncion(1,2);
console.log(resultado); // Output: 3

Funciones anónimas auto invocadas

Para esto se coloca la función entre () y al final de los {} también se le coloca ().

(
  function () {
    console.log("Hola")
  }()
) // Output: "Hola"

¿Cuál usar?

Los dos tipos de funciones son muy similares en JavaScript, la diferencia esta en como el navegador las carga en el contexto de ejecución.

Las funciones declarativas (function statement) se cargan antes de que se ejecute cualquier código. Este comportamiento se denomina hoisting, que permite utilizar una función antes de definirla.

console.log(saludar());
function saludar() { return "Hola crack";} // Output: "Hola crack"

En cambio las funciones anónimas asocia un valor con una variable, justamente como cualquier otra sentencia de asignación. Estas expresiones solo se cargan cuando el interprete llega a la definición de la función.

console.log(saludo()); // Output: ReferenceError: saludo is not defined
let saludo = function() { return "Hola !!"; }