Muutujate nähtavuspiirkonna nüansid if-else konstruktsioonides JavaScriptis
Muutujate nähtavuspiirkonnal on mõningaid
nüansse. Vaatame seda näite abil.
Lihtsalt deklareerime väljaspool meie tingimust muutuja
res ühe väärtusega ja sees
tingimuses muudame selle väärtuse teiseks:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // väljastab 2
Nagu näete, muutus muutuja res
tingimuse sees. Kõik aga muutub,
kui tingimuse sees deklareerida ka muutuja
res läbi let:
let res = 1;
if (true) {
let res = 2; // deklareerime muutuja läbi let
}
console.log(res); // väljastab 1, mitte 2!
Siin on asi selles, et muutuja deklareerimine
läbi let tingimuse sees loob kohaliku
muutuja res.
See tähendab, et tingimuse sees eksisteerib üks muutuja
res ja väljaspool tingimust - teine.
Sellest saab veenduda, väljastades muutuja väärtuse
konsooli tingimuse sees:
let res = 1;
if (true) {
let res = 2;
console.log(res); // väljastab 2
}
console.log(res); // väljastab 1
Allpool toodud koodi autor tahtis teostada
vanuse kontrolli, kas on saavutatud 18
aastat. Kood aga väljastab igal vanuse väärtusel
konsooli väärtuse undefined.
Parandage koodi autor vea. Siin on probleemne kood:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Allpool toodud koodi autor tahtis teostada
vanuse kontrolli, kas on saavutatud 18
aastat. Pärast koodi kontrollimist selgus, et kui
vanus on võrdne või suurem kui 18 aastat, siis
muutujasse adult kirjutatakse true,
nagu peabki, kuid kui vanus on väiksem kui
18, siis muutuja adult omab
väärtust undefined. Parandage
koodi autor vea.
Siin on probleemne kood:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Allpool toodud koodi autor tahtis teostada
vanuse kontrolli. Kood aga väljastab igal
vanuse väärtusel konsooli väärtuse
undefined. Parandage koodi autor viga.
Siin on probleemne kood:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = '18 kuni 23';
} else {
let res = 'üle 23';
}
} else {
let res = 'alla 18';
}
console.log(res);
Allpool toodud koodi autor tahtis teostada
vanuse kontrolli. Kood aga väljastab vanuse väärtusel
suurem kui 18 aastat konsooli väärtuse
undefined. Parandage
koodi autor viga.
Siin on probleemne kood:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = '18 kuni 23';
} else {
res = 'üle 23';
}
} else {
res = 'alla 18';
}
console.log(res);