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