При сравнении с 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, время: 10:53. |