Puščične funkcije so krajše, vendar so prave razlike v obnašanju vezave, ne samo v sintaksi.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
Puščične funkcije so krajše, vendar so prave razlike v obnašanju vezave, ne samo v sintaksi.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. Brez lastnega this — puščične funkcije dedujejo this iz obsega, ki jih vsebuje. To je najpomembnejša razlika in razlog, zakaj so odličnega za povratne 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. Ni objekta arguments — namesto tega uporabite parametre za počitek:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. Ne morejo biti uporabljene kot konstruktorji — new arrow() vrže napako in nimajo 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 uporabljajte puščičnih funkcij za metode objektov (ne bodo vezane na objekt) ali kadar potrebujete dinamičen this/arguments (obdelovalce dogodkov, ki se zanašajo na to, da je this element).
Uporabljajte puščične funkcije za povratne funkcije in kratke funkcije, kjer je dedovanje this prav tisto, kar želite; uporabite navadne funkcije za metode, konstruktorje in prototipske metode.
Knjižnica IT vprašanj za razgovore s podrobnimi odgovori — od začetnika do izkušenega.
Doniraj