الدالة ذات الرتبة الأعلى هي دالة تقوم بواحد على الأقل من: تأخذ دالة كمعامل، أو تعيد دالة. هذا ممكن لأن الدوال هي قيم من الدرجة الأولى في JS (يمكنك تمريرها مثل أي قيمة أخرى).
تمرير دالة
js
[, , ].( n * );
button.(, handler);
( (), );
الدالة ذات الرتبة الأعلى هي دالة تقوم بواحد على الأقل من: تأخذ دالة كمعامل، أو تعيد دالة. هذا ممكن لأن الدوال هي قيم من الدرجة الأولى في JS (يمكنك تمريرها مثل أي قيمة أخرى).
[, , ].( n * );
button.(, handler);
( (), );
function multiplier(factor) {
return n => n * factor; // returns a function that remembers `factor`
}
const double = multiplier(2);
const triple = multiplier(3);
double(5); // 10
triple(5); // 15
هنا multiplier تبني دوال متخصصة من دالة عامة — closure يلتقط factor.
function withLogging(fn) {
return (...args) => {
console.log(`calling with`, args);
const result = fn(...args);
console.log(`result`, result);
return result;
};
}
const loggedAdd = withLogging((a, b) => a + b);
الدوال ذات الرتبة الأعلى تجعل الكود تصريحياً وقابلاً لإعادة الاستخدام.
هي تشكل أساس أساليب المصفوفة (map/filter/reduce)، ومعالجة الأحداث، والـ middleware، والمزخرفات، والـ currying، وأنماط React (HOCs، custom hooks).
بدلاً من كتابة منطق الحلقة ذاته مراراً، تمرر السلوك كدالة.