Return a Function from Another Function In Bengali JavaScript Series ⇾ Chapter Nine (Part -3)
Find and FindIndex Function, Sort, Some and Every Function Uses, Return a Function from Another Function, Recursive, Currying, Function Composition

♗ Love To Play With → JavaScript & NodeJS.
✢ Interested → Web & Backend Development.
↯ Current Stack → MERN Stack
080. Return a Function from Another Function :
Higher order ফাঙ্কশন এর দুইটা পার্ট । একটা higher order ফাঙ্কশন আর্গুমেন্ট আকারে আর একটা ফাঙ্কশন নিতে পারে ।আর ২য় যে part তা হল হিগ্যের অর্ডার ফাঙ্কশন আর একটা ফাঙ্কশন কে return করতে পারে ।আমরা already জেনে গেছি প্রথম পার্ট ,যেখানে callback আকারে একটা ফাঙ্কশন আর একটা ফাঙ্কশন নিতে পারে ।এবারে আমরা ২য় পার্ট দেখব ।
আমরা একটা greet ফাঙ্কশন ইমপ্লিমেন্ট করে দেখি :

function greet(msg) {
function greeting(name) {
return msg + ", " + name;
}
return greeting;
}
var gm = greet("Good Morning");
console.log(typeof gm);
var name = gm("Tanvir Mehedi");
console.log(name);
প্রথমে আমরা greet নামে ফাঙ্কশন বানালাম যেটা পেরামিটার হিসেবে msg নিবে ।greet ফাঙ্কশন এর মধ্যে আমরা আর একটা ফাঙ্কশন বানালাম যেটা নাম দিলাম greeting এবং পেরামিটার নিবে name । আমরা greeting ফাঙ্কশন এ রিটার্ন করতে পারি greet থেকে পাওয়া msg এর সাথে , দিয়ে যোগ হোম greeting ফাঙ্কশন এর পেরামিটার ।ফাইনালি আমরা greeting ফাঙ্কশন তাকে রিটার্ন করলাম greet ফাঙ্কশন থেকে ।
এবারে প্রথমে greet ফাঙ্কশন কে কল করি যেটা একটা আর্গুমেন্ট নিবে msg ="Good Morning " ।যেহেতু আমরা দেখতে চাচ্ছি যে greet ফাঙ্কশন কল করে কি পাচ্ছি তাই আমরা একটা ভেরিএবলে ষ্টোর করে কনসোল লগ করছি ।কি টাইপ আমাদের gm সেটা দেখতে typeof ব্যবহার করেছি ।আমরা দেখব একটা ফাঙ্কশন রিটার্ন করছে ।কারণ আমরা greet ফাঙ্কশন এ রিটার্ন করেছি আর একটা ফাঙ্কশন যার নাম greeting ।এবারে আমাদের gm একটা ফাঙ্কশন আর সেটা আর্গুমেন্ট নিবে একটা নাম । তাহলে এবার gm কে "Tanvir Mehedi " আর্গুমেন্ট pass করে সরাসরি কনসোল লগ করতে পারি অথবা একটা ভেরিএবলে ষ্টোর করে সেটাকেও কনসোল লগ করতে পারি ।আমরা ফাইনালই সঠিক আউটপুট পাব ।
কারণ এবারে greeting যা রিটার্ন করছে সেটা আউটপুট ।এখানে খেয়াল করার বিষয় হল greet ফাঙ্কশন সরাসরি কল হচ্ছে না greet একটা ফাঙ্কশন expect করছে আর সেই ফাঙ্কশন কল করলে তবেই আমরা আউটপুট পাচ্ছি ।এই সিস্টেম তাই মূলত ফাঙ্কশন রিটার্ন করা ।আমরা যখন বড় লাইব্রেরি ব্যবহার করব ।তখন ভিতরের ইম্প্লিমেন্টেশন প্রায় সময় রিটার্ন ফাঙ্কশন ব্যবহার করে ।সরাসরি ফাঙ্কশন কল না করে আর একটা ফাঙ্কশন দিয়ে থাকে ।





