Kintamųjų matomumo srities niuansai if-else konstrukcijose JavaScript
Kintamųjų matomumo sritis turi tam tikrų
niuansų. Pažvelkime į jį pavyzdžiu.
Paskirkime mūsų sąlygos išorėje kintamąjį
res su viena reikšme, o sąlygos viduje
pakeiskime šią reikšmę į kitą:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // išves 2
Kaip matote, kintamasis res pasikeitė
sąlygos viduje. Vis dėlto, viskas pasikeis,
jei sąlygos viduje taip pat paskelbsime kintamąjį
res per let:
let res = 1;
if (true) {
let res = 2; // paskelbsime kintamąjį per let
}
console.log(res); // išves 1, o ne 2!
Čia visa esmė ta, kad kintamojo deklaravimas
per let sąlygos viduje sukūrė lokalų
kintamąjį res.
Tai yra, sąlygos viduje egzistuoja vienas kintamasis
res, o sąlygos išorėje - kitas.
Į tai įsitikinti galima, išvedus kintamojo reikšmę
į konsolę sąlygos viduje:
let res = 1;
if (true) {
let res = 2;
console.log(res); // išves 2
}
console.log(res); // išves 1
Žemiau pateikto kodo autorius norėjo atlikti
amžiaus patikrinimą ar pasiekta 18
metų. Vis dėlto, kodas, esant bet kuriai amžiaus reikšmei,
į konsolę išveda reikšmę undefined.
Ištaisykite kodo autoriaus klaidą. Štai problematiškas kodas:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Žemiau pateikto kodo autorius norėjo atlikti
amžiaus patikrinimą ar pasiekta 18
metų. Patikrinus kodą paaiškėjo, kad jei
amžius lygus arba didesnis nei 18 metų, tai
į kintamąjį adult įrašoma true,
kaip ir turi būti, tačiau, jei amžius mažesnis
nei 18, tai kintamasis adult turi
reikšmę undefined. Ištaisykite kodo autoriaus klaidą.
Štai problematiškas kodas:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Žemiau pateikto kodo autorius norėjo atlikti
amžiaus patikrinimą. Vis dėlto, kodas, esant bet kuriai
amžiaus reikšmei, į konsolę išveda reikšmę
undefined. Ištaisykite kodo autoriaus klaidą.
Štai problematiškas kodas:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'nuo 18 iki 23';
} else {
let res = 'daugiau nei 23';
}
} else {
let res = 'mažiau nei 18';
}
console.log(res);
Žemiau pateikto kodo autorius norėjo atlikti
amžiaus patikrinimą. Vis dėlto, kodas, esant amžiaus reikšmei
didesnei nei 18 metų, į konsolę išveda
reikšmę undefined. Ištaisykite kodo autoriaus klaidą.
Štai problematiškas kodas:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'nuo 18 iki 23';
} else {
res = 'daugiau nei 23';
}
} else {
res = 'mažiau nei 18';
}
console.log(res);