হায়ার অর্ডার ফাংশন

যখন কোন একটা ফাংশন অন্য কোন একটা ফাংশনকে Parameter হিসেবে Receive করে অথবা অন্য কোন একটা ফাংশনকে Return করে অথবা Receive, Return দুটোই হয়, তখন ঐ ফাংশন কে হায়ার অর্ডার ফাংশন বলে । একটা উদাহরন লক্ষ্য করা যাক,

এটা একটা নরমাল ফংশন 


function hello() {
    console.log('i am normal function')
}
hello()


এবার এই ফাংশনটাকে আমরা হায়ার অর্ডার ফাংশনে রুপান্তর করব

 তার জন্য আমাদের একটা ফাংশনকে Return করতে হবে। নিচে

 hello ফাংশনটি একটি হায়ার অর্ডার ফংশনে পরিনিত হয়েছে।

function hello() {
    return function print() {
        
        console.log('i am Higher-order function')
    }
}
hello()()

এবার দেখা যাক কিভাবে hello ফাংশনটি Print ফাংশনকে Receive

 করে  হায়ার অর্ডার ফাংশনে রুপান্তর করা যায়। 

function hello(namecallback) {
    console.log('This is '+" "+name)
    let age = 26
    callback(age)
}
function print(age) {
    console.log('My age is'+' '+age)
}
hello('Ruhul Amin'print)

উপরে উদাহরনটা মনযোগ সহকারে খেয়াল করি, এখানে দুটি

 ফাংশন বিদ্যমান। যখন আমরা hello ফাংশনটিকে কল করেছি

 তখন ভ্যালু হিসেবে দূটি প্যারামিটার পাস করেছি  1. Ruhul Amin 2.

 print function. এবার প্রিন্ট ফাংশনকে Receive  করবে hello function

 এর callback parameter এবার callback parameter এর ভিতরে  print()

 ফাংশনটি Assign হয়ে গেল । তার মানে callback টি ফাংশনে

 পরিনিত হয়ে গেল। এখন print ফাংশন কল করা আর callback

 ফাংশন কল করা একই কথা । তাই hello ফাংশনের মধ্যে callback

 ফাংশনটিকে কল করা হয়েছে। এবং প্যারামিটার হিসেবে age দিয়ে

 দেয়া হয়েছে । এভাবে print function কে hello function এর মধ্যে 

 parameter হিসেবে Receive করে hello function হয়ে গেল হায়ার

 অর্ডার ফাংশন। 

এরকম কিছু হায়ার অর্ডার ফাংশন আছে যেমন

1. map()

2. filter()

3. reduce()