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