Nuanses van die omvang van veranderlikes in if-else-konstruksies in JavaScript
Die omvang van veranderlikes het 'n sekere
nuans. Kom ons kyk na dit aan die hand van 'n voorbeeld.
Kom ons verklaar buite ons voorwaarde 'n veranderlike
res met een waarde, en binne
die voorwaarde verander ons hierdie waarde na 'n ander:
let res = 1;
if (true) {
res = 2;
}
console.log(res); // sal 2 uitvoer
Soos jy kan sien, het die veranderlike res verander
binne die voorwaarde. Alles sal eger verander,
as binne die voorwaarde die veranderlike
res ook deur let verklaar word:
let res = 1;
if (true) {
let res = 2; // verklaar die veranderlike deur let
}
console.log(res); // sal 1 uitvoer, en nie 2 nie!
Hier is dit alles omdat die verklaring van die veranderlike
deur let binne die voorwaarde 'n plaaslike
veranderlike res geskep het.
Dit wil sê binne die voorwaarde bestaan een veranderlike
res, en buite die voorwaarde - 'n ander.
Jy kan daarvan oortuig raak deur die waarde van die veranderlike
in die konsole binne die voorwaarde uit te voer:
let res = 1;
if (true) {
let res = 2;
console.log(res); // sal 2 uitvoer
}
console.log(res); // sal 1 uitvoer
Die outeur van die onderstaande kode wou 'n
ouderdomstoets vir die bereiking van 18
jaar uitvoer. Die kode vertoon eger vir enige waarde van ouderdom
die waarde undefined in die konsole.
Korrigeer die outeur se fout. Hier is die problematiese kode:
let age = 17;
let adult;
if (age >= 18) {
let adult = true;
} else {
let adult = false;
}
console.log(adult);
Die outeur van die onderstaande kode wou 'n
ouderdomstoets vir die bereiking van 18
jaar uitvoer. Na die toets van die kode het geblyk dat as
die ouderdom gelyk aan of groter as 18 jaar is, dan
word in die veranderlike adult true weggeskryf,
soos dit behoort te wees, maar as die ouderdom minder is as
18, dan het die veranderlike adult die
waarde undefined. Korrigeer die outeur se fout.
Hier is die problematiese kode:
let age = 17;
let adult;
if (age >= 18) {
adult = true;
} else {
let adult = false;
}
console.log(adult);
Die outeur van die onderstaande kode wou 'n
ouderdomstoets uitvoer. Die kode vertoon eger vir enige
waarde van ouderdom die waarde undefined in die konsole.
Korrigeer die outeur se fout.
Hier is die problematiese kode:
let age = 17;
let res;
if (age >= 18) {
if (age <= 23) {
let res = 'van 18 tot 23';
} else {
let res = 'meer as 23';
}
} else {
let res = 'minder as 18';
}
console.log(res);
Die outeur van die onderstaande kode wou 'n
ouderdomstoets uitvoer. Die kode vertoon eger vir 'n ouderdom
meer as 18 jaar die waarde undefined in die konsole.
Korrigeer die outeur se fout.
Hier is die problematiese kode:
let age = 19;
let res;
if (age >= 18) {
let res;
if (age <= 23) {
res = 'van 18 tot 23';
} else {
res = 'meer as 23';
}
} else {
res = 'minder as 18';
}
console.log(res);