ক্লোজার এবং জাভাস্ক্রিপ্টে অবিলম্বে ফাংশন ইনভোকেশন

আপনি ইতিমধ্যেই জানেন, একটি বেনামী ফাংশন অবিলম্বে কল করা সম্ভব এবং এর কাজের ফলাফল কোনো ভেরিয়েবলে নির্ধারণ করা সম্ভব:

javascriptlet result = function() {
  return '!';
}();

console.log(result); // আউটপুট হবে '!'

অনেকক্ষেত্রে, অবিলম্বে কল হওয়া ফাংশনটিকে বন্ধনীর মধ্যে আবদ্ধ করা হয়, যদিও এর কোনো প্রয়োজন নেই। এটি করা হয় যাতে স্পষ্টভাবে বোঝা যায় যে ফাংশনটি অবিলম্বে কল হচ্ছে:

javascriptlet result = (function() {
  return '!';
})();

console.log(result); // আউটপুট হবে '!'

এখন ধরা যাক, অবিলম্বে কল হওয়া ফাংশনের ফলাফল হল একটি বেনামী ফাংশন:

javascriptlet func = (function() {
  return function() {
    console.log('!');
  }
})();

func(); // আউটপুট হবে '!'

আসুন এমন করি যাতে প্রত্যাবর্তিত ফাংশনটি ক্লোজারে num ভেরিয়েবলটি সংরক্ষণ করে:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
  }
})();

যদি এতে num++ যোগ করা হয়, তাহলে func ফাংশনটি একটি তৈরি কাউন্টারে পরিণত হবে:

javascriptlet func = (function() {
  let num = 1;
  
  return function() {
    console.log(num);
    num++;
  }
})();

func(); //আউটপুট হবে 1
func(); //আউটপুট হবে 2
func(); //আউটপুট হবে 3
func(); //আউটপুট হবে 4
func(); //আউটপুট হবে 5
Задание 1

আমার কোড না দেখে, নিজে থেকেই একইরকম একটি কাউন্টার বাস্তবায়ন করুন।

Задание 2

কাউন্টারের কাজটি এমনভাবে পরিবর্তন করুন যাতে সেটি 5 পর্যন্ত গণনা করে, এবং তারপর আবার শুরু থেকে গণনা শুরু করে।