Cuando hablamos de funciones en JavaScript, tenemos dos tipos de funciones:


Funciones Declarativas:

En las funciones declarativas, utilizamos la palabra reservada function al inicio para poder declarar la función:

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

saludar('Diego');

Expresión de función:

En la expresión de función, la declaración se inicia con la palabra reservada var, donde se generará una variable que guardará una función anónima.

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

nombre(‘Diego’);

<aside> 💡 En la expresión de función, la función podría o no llevar nombre, aunque es más común que se hagan anónimas.

</aside>


Diferencias:

A las funciones declarativas se les aplica hoisting, y a la expresión de función, no. Ya que el hoisting solo se aplica en las palabras reservadas var y function.

<aside> 💡 Lo que quiere decir que con las funciones declarativas, podemos mandar llamar la función antes de que ésta sea declarada, y con la expresión de función, no, tendríamos que declararla primero, y después mandarla llamar.

</aside>