Strelične funkcije su kraće, ali prave razlike su u ponašanju vezivanja, ne samo u sintaksi.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
Strelične funkcije su kraće, ali prave razlike su u ponašanju vezivanja, ne samo u sintaksi.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. Nema vlastite this — strelične funkcije nasleđuju this iz obuhvatajućeg dosega. Ovo je najvažnija razlika i razlog zašto su odličan izbor za callback funkcije:
const timer = {
seconds: 0,
start() {
setInterval(() => this.seconds++, 1000); // ✅ `this` is timer
// a regular function here would have its own `this` (undefined) → bug
},
};
2. Nema arguments objekta — umesto toga koristite rest parametre:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. Ne mogu se koristiti kao konstruktori — new arrow() baca grešku i nemaju prototype.
const obj = {
name: "Ann",
greet: () => `Hi ${this.name}`, // ❌ `this` is NOT obj (it's outer scope)
greet2() { return `Hi ${this.name}`; }, // ✅ method needs dynamic `this`
};
Ne koristite strelične funkcije za metode objekta (neće se vezati za objekat) ili kada vam je potrebna dinamička this/arguments (rukovaoci događaja koji se oslanjaju na this da bude element).
Koristite strelične funkcije za callback funkcije i kratke funkcije gde nasleđivanje this je ono što želite; koristite obične funkcije za metode, konstruktore i metode prototipa.
Knjižnica IT pitanja za razgovore za posao s detaljnim odgovorima — od Juniora do Seniora.
Doniraj