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