Junior
¿Qué sabes sobre las diferencias entre una expresión de función (function expression) y una declaración de función (function declaration)?
sobes.tech AI
Respuesta de la IA
La expresión de función puede ser tanto con nombre como anónima. La declaración de función siempre tiene un nombre.
La principal diferencia es el mecanismo de elevación (hoisting):
- Declaración de función: Se eleva completamente, incluyendo el cuerpo. La función está disponible para ser llamada en el código antes de su declaración real.
- Expresión de función: Solo se eleva la variable a la que se le asigna (si se usa
var). La función en sí solo está disponible después de que el intérprete alcanza la línea con su definición. Conletyconstno hay elevación incluso para la variable.
// Declaración de función
console.log(declarationFunc()); // Funciona, la función ha sido elevada
function declarationFunc() {
return "Yo soy una declaración";
}
// Expresión de función
// console.log(expressionFunc()); // Causará TypeError o ReferenceError (depende de var/let/const)
const expressionFunc = function() {
return "Yo soy una expresión";
};
console.log(expressionFunc()); // Funciona después de la definición
Las declaraciones de funciones son preferibles para uso general, ya que su orden en el código no afecta la capacidad de llamarlas. Las expresiones de funciones se usan a menudo para:
- Crear funciones anónimas (por ejemplo, como argumentos o expresiones de función inmediatamente invocadas - IIFE).
- Definición condicional de funciones.
- Crear cierres.