JavaScript-те if-else құрылымдарындағы айнымалылар көріну облысының нюанстары

Айнымалылар көріну облысының белгілі бір нюансы бар. Оны мысалмен қарастырайық. Шартымыздың сыртында res айнымалысын бір мәнмен жариялап, сосын шарт ішінде сол мәнді басқа мәнге өзгертейік:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // 2 шығарады

Көріп отырғаныңыздай, res айнымалысы шарт ішінде өзгерді. Алайда, егер шарт ішінде res айнымалысын let арқылы қайта жарияласақ, бәрі өзгереді:

javascriptlet res = 1;

if (true) {
  let res = 2; // айнымалыны let арқылы жариялаймыз
}

console.log(res); // 2 емес, 1 шығарады!

Мұның бәрі шарт ішіндегі let арқылы айнымалыны жариялау res жергілікті айнымалысын жасағандығында.

Яғни, шарт ішінде бір res айнымалысы бар, ал шарттың сыртында - басқа. Бұған шарт ішінде айнымалы мәнін консольге шығару арқылы көз жеткізуге болады:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // 2 шығарады
}

console.log(res); // 1 шығарады
Задание 1

Төмендегі кодтың авторы жастың 18 жасқа жеткенін тексергісі келген. Алайда, код кез келген жаста консольде undefined мәнін шығарады. Код авторының қатесін түзетіңіз. Мәселелік код мынада:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 2

Төмендегі кодтың авторы жастың 18 жасқа жеткенін тексергісі келген. Кодты тексергеннен кейін, егер жас 18 жастан үлкен немесе тең болса, adult айнымалысына true жазылатыны, болатын сияқты, анықталды, алайда, егер жас 18 жастан кіші болса, adult айнымалысы undefined мәніне ие болады. Код авторының қатесін түзетіңіз.

Мәселелік код мынада:

javascriptlet age = 17;
let adult;

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

console.log(adult);
Задание 3

Төмендегі кодтың авторы жасты тексергісі келген. Алайда, код кез келген жаста консольде undefined мәнін шығарады. Код авторының қатесін түзетіңіз.

Мәселелік код мынада:

javascriptlet 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);
Задание 4

Төмендегі кодтың авторы жасты тексергісі келген. Алайда, код жас 18 жасан үлкен болғанда консольде undefined мәнін шығарады. Код авторының қатесін түзетіңіз.

Мәселелік код мынада:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = '18-тен 23-ке дейін';
  } else {
    res = '23-тен үлкен';
  }
} else {
  res = '18-тен кіші';
}

console.log(res);