Mainīgo loku nianses if-else konstrukcijās JavaScript

Mainīgo loku ir sava nianse. Apskatīsim to ar piemēru. Izveidosim ārpus mūsu nosacījuma mainīgo res ar vienu vērtību, bet iekšā nosacījumā mainīsim šo vērtību uz citu:

javascriptlet res = 1;

if (true) {
  res = 2;
}

console.log(res); // izvadīs 2

Kā redzat, mainīgais res mainījās iekšā nosacījumā. Tomēr viss mainīsies, ja iekšā nosacījumā arī deklarēsiet mainīgo res ar let:

javascriptlet res = 1;

if (true) {
  let res = 2; // deklarēsim mainīgo ar let
}

console.log(res); // izvadīs 1, nevis 2!

Šeit visa būtība ir tajā, ka mainīgā deklarēšana ar let iekšā nosacījuma izveidoja lokālo mainīgo res.

Tas ir, iekšā nosacījuma pastāv viens mainīgais res, bet ārpus nosacījuma - cits. To var pārliecināties, izvadot mainīgā vērtību konsole iekšā nosacījuma:

javascriptlet res = 1;

if (true) {
  let res = 2;
  console.log(res); // izvadīs 2
}

console.log(res); // izvadīs 1
Задание 1

Zemāk redzamā koda autors gribēja veikt vecuma pārbaudi uz sasniegšanu 18 gadiem. Tomēr kodā jebkurai vecuma vērtībai tiek izvadīta konsolē vērtība undefined. Izlabojiet koda autora kļūdu. Lūk, problemātiskais kods:

javascriptlet age = 17;
let adult;

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

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

Zemāk redzamā koda autors gribēja veikt vecuma pārbaudi uz sasniegšanu 18 gadiem. Pēc koda pārbaudes izrādījās, ka, ja vecums ir vienāds vai lielāks par 18 gadiem, tad mainīgajā adult tiek ierakstīts true, kā tam vajadzētu būt, tomēr, ja vecums ir mazāks par 18, tad mainīgajam adult ir vērtība undefined. Izlabojiet koda autora kļūdu.

Lūk, problemātiskais kods:

javascriptlet age = 17;
let adult;

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

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

Zemāk redzamā koda autors gribēja veikt vecuma pārbaudi. Tomēr kodā jebkurai vecuma vērtībai tiek izvadīta konsolē vērtība undefined. Izlabojiet koda autora kļūdu.

Lūk, problemātiskais kods:

javascriptlet age = 17;
let res;

if (age >= 18) {
  if (age <= 23) {
    let res = 'no 18 līdz 23';
  } else {
    let res = 'vairāk par 23';
  }
} else {
  let res = 'mazāk par 18';
}

console.log(res);
Задание 4

Zemāk redzamā koda autors gribēja veikt vecuma pārbaudi. Tomēr kodā ar vecuma vērtību lielāku par 18 gadiem tiek izvadīta konsolē vērtība undefined. Izlabojiet koda autora kļūdu.

Lūk, problemātiskais kods:

javascriptlet age = 19;
let res;

if (age >= 18) {
  let res;
  
  if (age <= 23) {
    res = 'no 18 līdz 23';
  } else {
    res = 'vairāk par 23';
  }
} else {
  res = 'mazāk par 18';
}

console.log(res);