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