Declaración vs expresión de función en JavaScript: diferencias

Declaración vs expresión de función en JavaScript: diferencias

En JavaScript hay dos maneras de crear una función: la expresión de función y la declaración de función. La primera se guarda dentro de una variable, la segunda se puede llamar desde cualquier punto de tu código. Seguramente estés acostumbrado a ver declaraciones de función: es lo que yo más conocía, pero merece la pena saber que existe otra forma de hacerlo.

Este artículo puede recibir actualizaciones

Declaración de función

A diferencia de una expresión de función, una función creada con una declaración se puede llamar incluso antes de declararla: el intérprete busca las variables y las declaraciones de función antes de recorrer el resto del script. Eso sí, para llamarla más adelante en tu código tienes que darle un nombre.

javascript
function addition(a, b) {
    return a + b;
};
var calcul= addition(2, 5) ;

Expresión de función

La expresión de función es una función que se crea, se almacena y se trata como una variable. Normalmente no tiene nombre, y por eso hablamos de funciones anónimas. La función queda guardada en una variable y se llama como cualquier otra. Ahora bien, solo se procesa cuando el intérprete del navegador lee la declaración: no puedes llamarla antes de ese punto, y cualquier código que aparezca hasta ahí puede modificar lo que ocurre dentro de ella.

javascript
var addition = function(a, b) {
    return a + b;
};
var calcul = addition(2, 5) ;

Immediately-Invoked Function Expression

Conocida habitualmente como IIFE, aísla todas las variables declaradas dentro de la función anónima frente a las de otros scripts que pudieran usar el mismo nombre. Esto se debe a el alcance de las variables, el scope. Aquí tienes un ejemplo de IIFE.

javascript
var addition = (function(){
  var a = 10;
    var b = 20;
    return a + b;
}());
  • Los paréntesis que rodean la función garantizan que se trate como una expresión.
  • Los dos paréntesis del final, (), le dicen al intérprete que la ejecute de inmediato.

Se usa sobre todo al empezar un script nuevo, para aislar todo nuestro código.

¿Cuándo usar expresiones de función anónimas?

Sirven para código que solo debe ejecutarse una vez, en lugar de ser llamado varias veces desde otras partes del script. Puedes usar una expresión de función anónima:

  • para evitar conflictos entre dos scripts que usen los mismos nombres de variable que el nuestro,
  • como argumento al llamar a una función (para calcular su valor);
  • para ejecutar una tarea cuando se produce un evento,
  • para asignar el valor de una propiedad a un objeto.

···

JavaScript

Damien Flandrin Desarrollador web desde 2010, creador de Gekkode y de Email Impact. Cada artículo se prueba en un proyecto real antes de publicarse. Contacto
Newsletter

Las nuevas pruebas, tutoriales y proyectos, por correo.

Pruebas reproducibles, código versionado, resultados fechados. Nunca spam.