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