Junior
Was weißt du über die Unterschiede zwischen einer Funktionsausdruck (function expression) und einer Funktionsdeklaration (function declaration)?
sobes.tech KI
Antwort von AI
Funktionsausdrücke können sowohl benannt als auch anonym sein. Funktionsdeklarationen haben immer einen Namen.
Der Hauptunterschied liegt im Hoisting-Mechanismus:
- Funktionsdeklaration: Wird vollständig hochgehoben, einschließlich des Körpers. Die Funktion ist im Code vor ihrer tatsächlichen Deklaration aufrufbar.
- Funktionsausdruck: Nur die Variable, der sie zugewiesen ist (wenn
varverwendet wird), wird hochgehoben. Die Funktion selbst ist erst nach Erreichen der Zeile mit ihrer Definition verfügbar. Beiletundconstgibt es kein Hoisting, auch nicht für die Variable.
// Funktionsdeklaration
console.log(declarationFunc()); // Funktioniert, die Funktion wurde hochgehoben
function declarationFunc() {
return "Ich bin eine Deklaration";
}
// Funktionsausdruck
// console.log(expressionFunc()); // Wirft TypeError oder ReferenceError (abhängig von var/let/const)
const expressionFunc = function() {
return "Ich bin ein Ausdruck";
};
console.log(expressionFunc()); // Funktioniert nach der Definition
Funktionsdeklarationen sind für den allgemeinen Gebrauch vorzuziehen, da ihre Reihenfolge im Code die Aufrufbarkeit nicht beeinflusst. Funktionsausdrücke werden häufig verwendet für:
- Erstellen anonymer Funktionen (z.B. als Argumente oder sofort aufgerufene Funktionsausdrücke - IIFE).
- Bedingte Definition von Funktionen.
- Erstellen von Closures.