При сравнении с 0 (в prompt) как прервать по Esc?
Доброго времени!
Я совсем нуб, начинаю изучать, потому прошу прощения заранее. Задача: вывод натуральных чисел. Введенное пользователем в prompt сравнивается с 0, чтобы указать, если введено ненатуральное число. Но если стоит '<= 0', то и на нажатие Esc выводит сообщение про ненатуральное число. Как сделать, чтобы при вводе 0 выдавалось сообщение, а при нажатии Esc - прерывалась работа? function askCh() { let n = +prompt('Chislo', ''); if (n <= 0) showUnNatural(n) else showPrimes(n); } function showUnNatural(n) { alert(`Число (${n}) не натуральное. Введите натуральное число!`); askCh(); } |
promt возвращает строку.
При нажатии esc строка будет пустая. Ну, а если ввели 0, то строка будет '0' |
Если в условии n<=0, то при вводе 0 - сообщение "Число (0) не натуральное...", а при Esc - "Число (null) не натуральное...".
При n<0, что ввод 0, что Esc просто прерывают работу кода, если это можно так назвать. А как сделать, чтобы при вводе 0 - выдавало сообщение, а при Esc - прерывалась работа? Работает только так if (n === null); else if (n <= 0) showUnNatural(n); else showNatural(n); но понимаю, что криво. Кода после (n === null) никакого, если туда пишу break - не работает вообще. Если (n === null) на вторую строчку перемещаю (за else if), то работает как выше написал. Не понимаю ничего ( |
function askCh() { while (true) { const s = prompt('Chislo', ''); if (!s) return null; const n = +s; if (n>0) return n; alert(`Число (${n}) не натуральное. Введите натуральное число!`); } } askCh(); |
Цитата:
|
Часовой пояс GMT +3, время: 22:22. |