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

Нюансы вобласці бачнасці зменных у канструкцыях if-else у JavaScript

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

let res = 1; if (true) { res = 2; } console.log(res); // выведе 2

Як вы бачыце, зменная res змянілася ўнутры умовы. Усё, аднак, зменіцца, калі ўнутры умовы таксама аб'явіць зменную res праз let:

let res = 1; if (true) { let res = 2; // аб'явім зменную праз let } console.log(res); // выведе 1, а не 2!

Тут уся справа ў тым, што аб'яўленне зменнай праз let ўнутры умовы стварыла лакальную зменную res.

Гэта значыць ўнутры умовы існуе адна зменная res, а звонку умовы - іншая. Пераканацца ў гэтым можна, вывеўшы значэнне зменнай у кансоль ўнутры умовы:

let res = 1; if (true) { let res = 2; console.log(res); // выведе 2 } console.log(res); // выведе 1

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

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

Аўтар прыведзенага ніжэй кода хацеў выканаць праверку ўзросту на дасягненне 18 гадоў. Пасля праверкі кода апынулася, што калі ўзрост роўны або большы за 18 гадоў, то ў зменную adult запісваецца true, як і павінна быць, аднак, калі ўзрост меншы 18, то зменная adult мае значэнне undefined. Выпраўце памылку аўтара кода.

Вось праблемны код:

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

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

Вось праблемны код:

let age = 17; let res; if (age >= 18) { if (age <= 23) { let res = 'ад 18 да 23'; } else { let res = 'больш за 23'; } } else { let res = 'менш за 18'; } console.log(res);

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

Вось праблемны код:

let age = 19; let res; if (age >= 18) { let res; if (age <= 23) { res = 'ад 18 да 23'; } else { res = 'больш за 23'; } } else { res = 'менш за 18'; } console.log(res);
byenru