Нијанси на опсегот на видливост на променливите во 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);