⊗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);
Български
AfrikaansAzərbaycanবাংলাБеларускаяČeštinaDanskDeutschΕλληνικάEnglishEspañolEestiSuomiFrançaisहिन्दीMagyarՀայերենIndonesiaItaliano日本語ქართულიҚазақ한국어КыргызчаLietuviųLatviešuМакедонскиMelayuမြန်မာNederlandsNorskPolskiPortuguêsRomânăРусскийසිංහලSlovenčinaSlovenščinaShqipСрпскиSrpskiSvenskaKiswahiliТоҷикӣไทยTürkmenTürkçeЎзбекOʻzbekTiếng Việt
Ние използваме бисквитки за работата на сайта, анализ и персонализация. Обработката на данни се извършва в съответствие с Политика за поверителност.
приемам всички настройки отхвърляне