الدوال السهمية أقصر، لكن الاختلافات الحقيقية تكون في سلوك الربط، وليس فقط في الصيغة.
js
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
الدوال السهمية أقصر، لكن الاختلافات الحقيقية تكون في سلوك الربط، وليس فقط في الصيغة.
const regular = function () {};
const arrow = () => {};
const short = x => x * 2; // implicit return for one expression
1. بدون this خاص بها — الدوال السهمية ترث this من النطاق المحيط. هذا هو الاختلاف الأكثر أهمية والسبب في أنها رائعة للدوال المرجعية (callbacks):
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 — استخدم معاملات rest بدلاً من ذلك:
const sum = (...args) => args.reduce((a, b) => a + b, 0);
3. لا يمكن استخدامها كمنشئات — new arrow() يرمي خطأ، وليس لديها 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`
};
لا تستخدم الدوال السهمية لـ طرق الكائنات (لن يتم ربطها بالكائن) أو عندما تحتاج إلى this/arguments ديناميكي (معالجات الأحداث التي تعتمد على this كونه العنصر).
استخدم الدوال السهمية للدوال المرجعية والدوال القصيرة حيث يكون وراثة this هو ما تريده؛ استخدم الدوال العادية للطرق والمنشئات وطرق النموذج الأولي.
مكتبة من أسئلة مقابلات تقنية المعلومات مع إجابات مفصّلة — من المبتدئ إلى المتقدم.
تبرع