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 ကို ပြသမည်
Задание 1

အောက်တွင်ပေးထားသော ကုဒ်၏ ရေးသူသည် အသက် 18 နှစ်ပြည့်မှုကို စစ်ဆေးလိုသည်။ သို့သော် ကုဒ်သည် အလုပ်မလုပ်ပါ။ ကုဒ်ရေးသူ၏ အမှားကို ပြင်ဆင်ပေးပါ။ ပြဿနာရှိသောကုဒ်မှာ အောက်ပါအတိုင်းဖြစ်သည်:

javascriptlet age = 17;

if (age >= 18) {
  let adult = true;
} else {
  let adult = false;
}

console.log(adult);