JavaScript'теги if-else курулуштарындагы өзгөрмөлөрдүн көрүнүү аянтынын нюанстары
Өзгөрмөлөрдүн көрүнүү аянты бир нюанска ээ.
Келгиле, аны мисал менен карап чыгалы.
Келгиле, шарттыбыздын сыртында бир маани менен
res өзгөрмөсүн жарыялап, шарттын ичинде
бул маанини башкасына өзгөртөлү:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // 2 чыгарат
Көрүп тургандарыңыздай, res өзгөрмөсү
шарттын ичинде өзгөрдү. Бирок, эгерде шарттын ичинде
res өзгөрмөсүн let аркылуу дагы
жарыяласак, баары өзгөрөт:
let res = 1;
if (true) {
let res = 2; // өзгөрмөнү let аркылуу жарыялайбыз
}
console.log(res); // 2 эмес, 1 чыгарат!
Бул жердеги иштин сыры мында, шарттын ичиндеги
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);