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); // 2 မဟုတ်ဘဲ 1 ကို ပြသမည်!
ဤနေရာတွင် အဓိကအချက်မှာ၊ စစ်ဆေးချက် အတွင်းlet ဖြင့် ကိန်းရှင်ကြေညာခြင်းသည်
ေဒသတွင်းကိန်းရှင် res တစ်ခုကို ဖန်တီးပေးသောကြောင့် ဖြစ်သည်။
ဆိုလိုသည်မှာ စစ်ဆေးချက် အတွင်း၌ ကိန်းရှင် res တစ်ခု တည်ရှိပြီး၊
စစ်ဆေးချက် အပြင်ဘက်၌ မူ အခြားတစ်ခု တည်ရှိသည်။
ထိုအချက်ကို စစ်ဆေးချက် အတွင်း၌ ကိန်းရှင်၏တန်ဖိုးကို console တွင် ထုတ်ပြခြင်းဖြင့် အတည်ပြုနိုင်သည်။
let res = 1;
if (true) {
let res = 2;
console.log(res); // 2 ကို ပြသမည်
}
console.log(res); // 1 ကို ပြသမည်
အောက်ပါကုဒ်၏ ရေးသားသူသည် အသက် 18 နှစ် ပြည့်မီခြင်းရှိမရှိ စစ်ဆေးလိုခဲ့သည်။
သို့သော်၊ ကုဒ်သည် အသက်၏မည်သည့်တန်ဖိုးဖြစ်စေ console တွင် 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);
အောက်ပါကုဒ်၏ ရေးသားသူသည် အသက်စစ်ဆေးခြင်းကို လုပ်ဆောင်လိုခဲ့သည်။
သို့သော်၊ ကုဒ်သည် အသက်၏မည်သည့်တန်ဖိုးဖြစ်စေ console တွင်
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 နှစ်ထက် ကြီးသောအခါ
console တွင် 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);