Нюансҳои доираи дидабарии тағирёбандаҳо дар сохтҳои if-else дар JavaScript

Доираи дидабарии тағирёбандаҳо як нюанси муайян дорад. Биёед онро бо мисол баррасӣ кунем. Биёед берун аз шароити мо тағирёбандаи 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); // 1-ро хориҷ мекунад, на 2!

Дар ин ҷо ҳамаи кор дар он аст, ки эълони тағирёбанда тавассути 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);