Rodyklinės funkcijos trumpesnės, bet tikri skirtumai yra ryšio elgesyje, o ne tik sintaksėje.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
Rodyklinės funkcijos trumpesnės, bet tikri skirtumai yra ryšio elgesyje, o ne tik sintaksėje.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. Nėra savos this — rodyklės paveldi this iš supančios srities. Tai svarbiausias skirtumas ir kodėl jos puikios grąžinimo funkcijoms:
const timer = {
seconds: 0,
start() {
setInterval(() => this.seconds++, 1000); // ✅ `this` is timer
// a regular function here would have its own `this` (undefined) → bug
},
};
2. Nėra arguments objekto — vietoj to naudokite likutines parametrus:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. Negali būti naudojamos kaip konstruktoriai — new arrow() iškelia klaidą, ir jų nėra 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`
};
Nenaudokite rodyklių objekto metodams (jos nebus susaistos su objektu) arba kai reikalinga dinamiška this/arguments (įvykių tvarkytuvai, kurie remiasi tuo, kad this yra elementas).
Naudokite rodykles grąžinimo funkcijoms ir trumpoms funkcijoms, kur this paveldėjimas yra tai, ko norite; naudokite paprastas funkcijas metodams, konstruktoriams ir prototipo metodams.
IT pokalbių klausimų biblioteka su išsamiais atsakymais — nuo Junior iki Senior.
Paaukoti