Junior
Wat is het verschil tussen een klassieke functie en een pijlfunctie in JavaScript?
sobes.tech AI
Antwoord van AI
Het belangrijkste verschil ligt in hoe ze omgaan met this.
Een klassieke functie heeft zijn eigen this, dat wordt bepaald door de context waarin deze wordt aangeroepen (hoe deze werd aangeroepen).
Een pijl-functie heeft geen eigen this. Het erft this lexicaal uit de omgeving waarin deze is gedefinieerd.
Andere verschillen:
argumentsobject: Klassieke functies hebben toegang tot hetargumentsobject, pijlfuncties niet (maar je kunt rest-parameters gebruiken).- Constructeurs: Klassieke functies kunnen worden gebruikt als constructeurs met de
newoperator. Pijlfuncties niet. prototypeeigenschap: Klassieke functies hebben deprototypeeigenschap. Pijlfuncties niet.
Voorbeeld van werken met this:
// Voorbeeld met klassieke functie
const obj = {
name: 'Object',
greet: function() {
console.log(this.name); // this verwijst naar obj
}
};
obj.greet(); // Toont: Object
const greetFunc = obj.greet;
greetFunc(); // Toont: undefined (of Window in de browser) - this verliest de context van obj
// Voorbeeld met pijl-functie
const objArrow = {
name: 'Object met pijl',
greet: () => {
console.log(this.name); // this erft de externe context (in dit geval global of Window)
}
};
objArrow.greet(); // Toont: undefined (of de naam van het venster in de browser, als name globaal is gedefinieerd)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Toont: undefined (of de naam van het venster in de browser) - this verandert niet