Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- zero.p2p.shpp.me/tasks/2_3_lift.html - не забувайте додавати лінк на завдання, так зручно)
- * Здравствуйте. Не могу до сих пор разобраться с задачей про лифт. Если в 4 строке я закрываю блок,
- * то в строке 5 не распознается переменная password. Если оставить открытым блок в строке 4,
- * тогда переменная распознается, но код все равно не работает, так как в строке 6 последний символ
- * подчеркнут красным
- *
- let lift = prompt ('який номер поверху?')
- if (lift < 1 || lift > 9) { console.log("невірний поверх")}
- if ((lift >= 1 && lift <= 3 || lift >= 7 && lift <= 9)) {console.log('ok')}
- else { let password = prompt('ввести пароль') // рядок 4
- if (password != 1337) {console.log('невірний пароль')} // рядок 5
- else { console.log ("ok")} // рядок 6
- добре, що ви описали ситуацію з якою розбираєтесь, але круто коли ще додати що ви думаєте з цього приводу,
- чому так відбувається, а ще чим конретніші питання - тим краще, є думка, що коли ви будете конкретизувати питання та
- надавати свої думки щодо відповіді - то питання може не витримати і перетворитися на відповідь, навіть не обов'язково опівночі.)
- І це надасть більше інформації щодо того, яка допомога вам буде корисна. Намагатимусь влучити:
- let - це ключове слово, що створює змінну, як ви вже помітили змінну з блочною видимістю, тобто створена в блокі змінна
- не буде видна в інших зовнішніх блоках. У вкладених буде: */
- let globalVariable = 42; /* ця змінна буде видна просто скрізь у вашому коді, вона глобальна, тобто створена у самому
- зовнішньому скоупі, блокові, він такий глобальний, що навіть фігурними не обозначається, але наче вони є.)
- */
- {
- console.log("і тут є globalVariable = " + globalVariable);
- {
- let localVariable = 1;
- console.log("в цьому блокові створили змінну а = " + localVariable);
- console.log("і тут є globalVariable = " + globalVariable);
- {
- console.log("тут змінна а видна, бо це вкладений блок, а = " + localVariable);
- console.log("і тут є globalVariable = " + globalVariable);
- {
- console.log("і тут змінна а видна, як і у всіх блоках вкладених в той, де її створено а = " + localVariable);
- console.log("і тут є globalVariable = " + globalVariable);
- }
- }
- }
- console.log("цей блок зовнішній від того, де створили змінну а, тут її не існує, а =" + a);
- console.log("і тут є globalVariable = " + globalVariable);
- }
- {
- console.log("тут а не існує, бо це інший блок, а = " + a);
- console.log("і тут є globalVariable = " + globalVariable);
- }
- console.log("і тут є globalVariable = " + globalVariable);
- /* глобальні змінні майже завжди гірші ніж локальні, тому що вони можуть вносити неоднозначність, в той час як локальні -
- добрі, бо нікуди далі свого блоку не йдуть, не забруднюють інші пространства імен, але про це згодом, поки навчитбся
- створювати змінну там, де вона потрібна та має бути видна.
- Такий запис - коли індентація відокремлює блоки в фігурних дужкаї є більш читабельна та відповідає кодстайлу, раджу.
- * Відформатував автоформатом (можна зазернути в закріплені коменти в чаті в дискорді, там є про це) ваш код:*/
- let lift = prompt('який номер поверху?')
- if (lift < 1 || lift > 9) {
- console.log("невірний поверх") /* якщо введено невалідний поверх, то ми зайдемо в цей іф, виведемо "невірний поверх"
- та подальші умови можна вже не обробляти, тут може стати в пригоді слово else, яке каже
- якщо ця умова виконується {
- роби це
- } інакше {
- роби те
- }
- тобто перевіряти далі треба тільки коли поточна умова не виконається. А ще використання цього слова
- дасть впевненість, що ми не опинимося в коді нижче з невалідним поверхом, я вкажу де саме це викличе невірну роботу
- ліфта */
- }
- if ((lift >= 1 && lift <= 3 || lift >= 7 && lift <= 9)) {
- console.log('ok')
- } else { // поміркуйте, чи опинимося ми тут, коли ввели невалідний поверх? Той що менше 1 або більший за 9?
- let password = prompt('ввести пароль')
- if (password != 1337) {
- console.log('невірний пароль')
- } else {
- console.log("ok")
- } // тепер тут каже, що не закритий блок, тобто не вистачає закриваючої фігурної дужки
- /* Раджу закрити блок, щоб не було помилки і можна було потестити подебажити програму. ЩОб було зручніше та наочніше
- дебажити відлагоджувати, можна скористатися логуванням: додати виведення у консоль якоїсь інформації на різних блоках
- вашої програми, щоб при тестуванні ви мали можливість бачити, куди саме заходить код. Як завжди можна докрутити код
- декількома способами. Можна додати перевірку після вашого елсу що ведений саме запаролений поверх. Але цього робити
- не прийдеться, якщо використати елсе після першого іфу.
- О, назва змінної
- lіft як на мене не зовсім добра, поверх приймає, то краще так і іменувати.
- Гарного коду.
- */
Add Comment
Please, Sign In to add comment