Sobes.tech
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:

  • arguments object: Klassieke functies hebben toegang tot het arguments object, pijlfuncties niet (maar je kunt rest-parameters gebruiken).
  • Constructeurs: Klassieke functies kunnen worden gebruikt als constructeurs met de new operator. Pijlfuncties niet.
  • prototype eigenschap: Klassieke functies hebben de prototype eigenschap. 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