Arrow fonksiyonları daha kısadır, ancak gerçek farklar bağlama davranışında değil, sadece sözdiziminde değildir.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
Arrow fonksiyonları daha kısadır, ancak gerçek farklar bağlama davranışında değil, sadece sözdiziminde değildir.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. Kendi this'i yok — arrow'lar çevreleyen kapsamdan this değerini miras alırlar. Bu en önemli fark ve callback'ler için neden harika olduklarının nedenidir:
const timer = {
seconds: 0,
start() {
setInterval(() => this.seconds++, 1000); // ✅ `this` is timer
// a regular function here would have its own `this` (undefined) → bug
},
};
2. arguments nesnesi yok — bunun yerine rest parametrelerini kullanın:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. Yapıcı olarak kullanılamaz — new arrow() hata fırlatır ve prototype'ları yoktur.
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`
};
object metotları için arrow kullanmayın (nesneye bağlanmaz) veya dinamik this/arguments gerektiğinde (this'in eleman olması gereken olay işleyicileri).
Callback'ler ve this miras almak istediğiniz kısa fonksiyonlar için arrow'ları kullanın; metotlar, yapıcılar ve prototip metotları için normal fonksiyonları kullanın.
Junior'dan Senior'a detaylı cevaplarla bir BT mülakat soruları kütüphanesi.
Bağış Yap