ক্লোজার এবং জাভাস্ক্রিপ্টে অবিলম্বে ফাংশন ইনভোকেশন
আপনি ইতিমধ্যেই জানেন, একটি বেনামী ফাংশন অবিলম্বে কল করা সম্ভব এবং এর কাজের ফলাফল কোনো ভেরিয়েবলে নির্ধারণ করা সম্ভব:
let result = function() {
return '!';
}();
console.log(result); // আউটপুট হবে '!'
অনেকক্ষেত্রে, অবিলম্বে কল হওয়া ফাংশনটিকে বন্ধনীর মধ্যে আবদ্ধ করা হয়, যদিও এর কোনো প্রয়োজন নেই। এটি করা হয় যাতে স্পষ্টভাবে বোঝা যায় যে ফাংশনটি অবিলম্বে কল হচ্ছে:
let result = (function() {
return '!';
})();
console.log(result); // আউটপুট হবে '!'
এখন ধরা যাক, অবিলম্বে কল হওয়া ফাংশনের ফলাফল হল একটি বেনামী ফাংশন:
let func = (function() {
return function() {
console.log('!');
}
})();
func(); // আউটপুট হবে '!'
আসুন এমন করি যাতে প্রত্যাবর্তিত ফাংশনটি
ক্লোজারে num ভেরিয়েবলটি সংরক্ষণ করে:
let func = (function() {
let num = 1;
return function() {
console.log(num);
}
})();
যদি এতে num++ যোগ করা হয়, তাহলে
func ফাংশনটি একটি তৈরি কাউন্টারে পরিণত হবে:
let func = (function() {
let num = 1;
return function() {
console.log(num);
num++;
}
})();
func(); //আউটপুট হবে 1
func(); //আউটপুট হবে 2
func(); //আউটপুট হবে 3
func(); //আউটপুট হবে 4
func(); //আউটপুট হবে 5
আমার কোড না দেখে, নিজে থেকেই একইরকম একটি কাউন্টার বাস্তবায়ন করুন।
কাউন্টারের কাজটি এমনভাবে পরিবর্তন করুন যাতে
সেটি 5 পর্যন্ত গণনা করে, এবং তারপর আবার শুরু থেকে গণনা শুরু করে।