Šipkové funkce jsou kratší, ale skutečné rozdíly jsou v chování vazby, ne jen v syntaxi.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
Šipkové funkce jsou kratší, ale skutečné rozdíly jsou v chování vazby, ne jen v syntaxi.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. Vlastní this nemají — šipkové funkce dědí this z obklopujícího rozsahu. Toto je nejdůležitější rozdíl a důvod, proč jsou skvělé pro callbacky:
const timer = {
seconds: 0,
start() {
setInterval(() => this.seconds++, 1000); // ✅ `this` is timer
// a regular function here would have its own `this` (undefined) → bug
},
};
2. Žádný objekt arguments — místo toho použijte parametry rest:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. Nemohou být použity jako konstruktory — new arrow() vyvolá chybu a nemají 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`
};
Nepoužívejte šipkové funkce pro metody objektů (nebudou vázány na objekt) nebo když potřebujete dynamické this/arguments (obslužné rutiny událostí, které se spoléhají na this být prvkem).
Používejte šipkové funkce pro callbacky a krátké funkce, kde dědění this je to, co chcete; použijte běžné funkce pro metody, konstruktory a metody prototypu.
Knihovna IT otázek k pohovoru s podrobnými odpověďmi — od Junior po Senior.
Přispět