JavaScript-এ if-else-এ ভেরিয়েবলের স্কোপ
সরলতার জন্য ধরা যাক আমাদের কাছে সবসময় সত্য শর্ত রয়েছে:
javascriptif (true) {
}
নিচের কোডটি দেখি:
javascriptif (true) {
let res = '!';
}
console.log(res);
আপনি দেখতে পাচ্ছেন, res ভেরিয়েবলে
'!' মানটি সংরক্ষিত হওয়ার কথা। তবে,
এই কোডটি চালালে কনসোলে একটি
ত্রুটি দেখাবে!
ব্যাপারটি হল, কোঁকড়া বন্ধনীর ভিতরে ঘোষিত ভেরিয়েবলগুলি শুধুমাত্র সেই বন্ধনীর ভিতরে দৃশ্যমান, বাইরে অদৃশ্য। বৈজ্ঞানিক ভাষায় এখানে ভেরিয়েবলের স্কোপ নিয়ে আলোচনা করা হয়।
এটা বলা যেতে পারে যে কোঁকড়া বন্ধনীর ভিতরে ঘোষিত ভেরিয়েবলগুলির স্কোপ শুধুমাত্র সেই কোঁকড়া বন্ধনীগুলি। তবে, যদি ভেরিয়েবলটি কোঁকড়া বন্ধনীর বাইরে ঘোষিত হয়, তবে এটি ভিতরেও দৃশ্যমান, এবং বাইরেও:
javascriptlet res; // ভেরিয়েবল বাইরে ঘোষিত
if (true) {
res = '!';
}
console.log(res); // '!' দেখাবে
নিচের উদাহরণে, res ভেরিয়েবলে
শর্তের উপর নির্ভর করে হয়
1 মান, নাহয় 2 মান সংরক্ষিত হয়:
javascriptlet num = 5;
if (num >= 0) {
let res = 1;
} else {
let res = 2;
}
console.log(res);
তবে, এই কোডটি চালালে কনসোলে একটি ত্রুটি দেখাবে। আপনি এখন যেমন বুঝতে পারছেন, সমস্যাটি ভেরিয়েবলের দৃশ্যমানতার মধ্যে। সমস্যার সমাধানের জন্য ভেরিয়েবলটি শর্তের বাইরে ঘোষণা করি:
javascriptlet test = true;
let res; // ভেরিয়েবলটি শর্তের বাইরে ঘোষণা করি
if (test) {
res = 1;
} else {
res = 2;
}
console.log(res); // 1 দেখাবে
নিচের দেওয়া কোডের লেখক বয়স 18
পূরণ হয়েছে কিনা তা পরীক্ষা করতে চেয়েছিলেন।
যাইহোক, কোডটি কাজ করছে না। লেখকের
কোডের ত্রুটি সংশোধন করুন। এখানে সমস্যাযুক্ত কোডটি:
javascriptlet age = 17;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);