আপনি যদি ধাপে ধাপে কাজ করে থাকেন তবে এটি আসলে জটিল নয়। আসুন ভিতরে থেকে কাজ করা যাক। কল করা হচ্ছে:
three()
প্যারামিটার ব্যতীত আপনি ফানক হিসাবে একটি অপরিজ্ঞাত মান পাস করছেন। সুতরাং এটি বলার মতোই:
makeNum(3, undefined)
মেকনাম যখন দেখেন যে ফানক অপরিজ্ঞাপিত, তখন এটি সংখ্যা ফিরে আসে, যা 3।
সুতরাং আমরা এটিকে কমিয়ে রেখেছি:
eight(minus(3))
এখন দেখা যাক কিভাবে
minus(3)
মূল্যায়ন করে। বিয়োগটি দেখতে পাবে যে আপনি সরবরাহ করেছেন যে প্যারামিটারটি 3, তাই এটি এমন একটি ফাংশন দেয় যা একটি "বাম" পরামিতি গ্রহণ করতে পারে এবং আমরা ইতিমধ্যে এটি সরবরাহ করেছিলাম 3 কে বিয়োগ করতে পারে। এটি কার্যকর করা হয় না। এটি কেবল সেখানে বসে আছে, "বাম" প্যারামিটার সহ কল করার জন্য অপেক্ষা করছে যাতে এটি এটি থেকে 3 টি বিয়োগ করতে পারে।
সুতরাং আমরা এটিকে কমিয়ে রেখেছি:
eight(function(left){
return left - 3;
})
এখন দেখা যাক এটি কীভাবে মূল্যায়ন করে। আটটিকে ফানক প্যারামিটার এই ফাংশন হিসাবে ডাকা হয়:
function(left){
return left - 3;
}
এটি তখন 8 এবং এই ফাংশনটিকে মেকনামে পাস করে যখন বলে:
makeNum(8, func)
MakeNum তারপরে দেখেছে যে ফানক সরবরাহ করা হয়েছে (এবং তাই অপরিবর্তিত নয়) এবং ফানক (নাম) আটটি ফাংশনে ফিরিয়ে দেয়, যা পাশ করার মতোই:
8 - 3
আট ফাংশন ফিরে। আটটি ফাংশনটি সেই মানটি পায় এবং তারপরে এটি প্রদান করে। সুতরাং আমরা এটিকে কমিয়ে রেখেছি:
5
যা কনসোলে লগইন হয়।