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);