¿Cuál es la diferencia entre una expresión de función vs declaración en JavaScript? [duplicar]

Esta pregunta ya tiene una respuesta aquí:

var functionName = function () {} vs function functionName () {} 37 respuestas

¿Cuál es la diferencia entre las siguientes líneas de código?

<code>//Function declaration
function foo() { return 5; }

//Anonymous function expression
var foo = function() { return 5; }

//Named function expression
var foo = function foo() { return 5; }
</code>
¿Qué es una expresión de función nombrada / anónima?¿Qué es una función declarada?¿Cómo tratan los navegadores con estas construcciones de manera diferente?

¿Qué hacen las respuestas a una pregunta similar (var functionName = function () {} vs function functionName () {}) no es exactamente correcto?

Respuestas a la pregunta(5)

Su respuesta a la pregunta