Junior
Was ist der Unterschied zwischen einer klassischen Funktion und einer Pfeilfunktion in JavaScript?
sobes.tech KI
Antwort von AI
Der Hauptunterschied liegt darin, wie sie mit this arbeiten.
Eine klassische Funktion hat ihr eigenes this, das durch den Kontext bestimmt wird, in dem sie aufgerufen wird (wie sie aufgerufen wurde).
Eine Pfeilfunktion hat kein eigenes this. Sie erbt this lexikalisch aus der Umgebung, in der sie definiert wurde.
Weitere Unterschiede:
argumentsObjekt: Klassische Funktionen haben Zugriff auf dasarguments-Objekt, Pfeilfunktionen nicht (aber man kann Rest-Parameter verwenden).- Konstruktoren: Klassische Funktionen können als Konstruktoren mit dem
new-Operator verwendet werden. Pfeilfunktionen nicht. prototype-Eigenschaft: Klassische Funktionen haben dieprototype-Eigenschaft. Pfeilfunktionen nicht.
Beispiel für die Arbeit mit this:
// Beispiel mit klassischer Funktion
const obj = {
name: 'Objekt',
greet: function() {
console.log(this.name); // this bezieht sich auf obj
}
};
obj.greet(); // Gibt aus: Objekt
const greetFunc = obj.greet;
greetFunc(); // Gibt aus: undefined (oder Window im Browser) - this verliert den Kontext von obj
// Beispiel mit Pfeilfunktion
const objArrow = {
name: 'Objekt mit Pfeil',
greet: () => {
console.log(this.name); // this erbt den externen Kontext (in diesem Fall global oder Window)
}
};
objArrow.greet(); // Gibt aus: undefined (oder den Fenstertitel im Browser, wenn name global definiert ist)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Gibt aus: undefined (oder den Fenstertitel im Browser) - this ändert sich nicht