АКЦЫЯ: бясплатныя месячныя курсы па стварэнні сайтаў
на выбар: вёрстка, JavaScript, PHP, Python або фрэймворкі. Сёння апошні дзень для запісу! Націскай!
⊗jsPmCdScp 134 of 505 menu

Вобласць бачнасці зменных у if-else у JavaScript

Няхай для прастаты ў нас ёсць заўсёды выконваючаяся ўмова:

if (true) { }

Давайце разгледзім наступны код:

if (true) { let res = '!'; } console.log(res);

Як вы бачыце, у зменную res павінна запісацца значэнне '!'. Аднак, калі запусціць гэты код, то ў кансоль выведзецца памылка!

Справа ў тым, што зменныя, аб'яўленыя ўнутры фігурных дужак, бачныя толькі ўнутры гэтых дужак, і не бачныя вонках. Па-навуковаму тут ідзе гаворка аб вобласці бачнасці зменных.

Можна казаць аб тым, што вобласцю бачнасці зменных, аб'яўленых унутры фігурных дужак, з'яўляюцца толькі гэтыя фігурныя дужкі. Аднак, калі зменная аб'яўлена вонках фігурных дужак, то бачная і ўнутры іх, і вонках:

let res; // зменная аб'яўлена вонках if (true) { res = '!'; } console.log(res); // выведзе '!'

У наступным прыкладзе ў зменную res у залежнасці ад умовы запісваецца альбо значэнне 1, альбо значэнне 2:

let num = 5; if (num >= 0) { let res = 1; } else { let res = 2; } console.log(res);

Аднак, калі запусціць гэты код, то ў кансоль выведзецца памылка. Як вы цяпер ужо разумееце, усё справа ў бачнасці зменных. Для вырашэння праблемы аб'явім зменную вонках умовы:

let test = true; let res; // аб'явім зменную вонках умовы if (test) { res = 1; } else { res = 2; } console.log(res); // выведзе 1

Аўтар прыведзенага ніжэй кода хацеў выканаць праверку ўзросту на дасягненне 18 гадоў. Код, аднак, не працуе. Выпраўце памылку аўтара кода. Вось праблемны код:

let age = 17; if (age >= 18) { let adult = true; } else { let adult = false; } console.log(adult);
byenru