Junior
Mi a különbség a klasszikus függvény és a nyíl függvény között JavaScriptben?
sobes.tech MI
Válasz az MI-től
A fő különbség abban rejlik, hogyan működnek a this használatában.
Egy klasszikus függvény saját this-tel rendelkezik, amely a hívás kontextusától függ (hogyan hívták meg).
Egy arrow függvény nem rendelkezik saját this, hanem lexikálisan örökli this a definiálás környezetéből.
További különbségek:
argumentsobjektum: A klasszikus függvények hozzáférnek azargumentsobjektumhoz, az arrow függvények nem (de használhatók rest paraméterek).- Konstruktorok: A klasszikus függvények használhatók konstruktorként a
newoperátorral. Az arrow függvények nem. prototypetulajdonság: A klasszikus függvények rendelkeznek aprototypetulajdonsággal. Az arrow függvények nem.
Példa a this használatára:
// Klasszikus függvény példája
const obj = {
name: 'Objektum',
greet: function() {
console.log(this.name); // this az obj-re utal
}
};
obj.greet(); // Kiírja: Objektum
const greetFunc = obj.greet;
greetFunc(); // Kiírja: undefined (vagy Window a böngészőben) - a this elveszíti a kontextust
// Arrow függvény példája
const objArrow = {
name: 'Arrow objektum',
greet: () => {
console.log(this.name); // this a külső kontextust örökli (ebben az esetben globális vagy Window)
}
};
objArrow.greet(); // Kiírja: undefined (vagy a böngésző ablakának nevét, ha a name globálisan van definiálva)
const greetArrowFunc = objArrow.greet;
greetArrowFunc(); // Kiírja: undefined (vagy a böngésző ablakának nevét) - a this nem változik