Почему такой скрипт не работает ? Не пойму где ошибка
Исходная задача: Напишите цикл, который предлагает prompt ввести число, большее 100. Если посетитель ввёл другое число – попросить ввести ещё раз, и так далее.
Цикл должен спрашивать число пока либо посетитель не введёт число, большее 100, либо не нажмёт кнопку Отмена (ESC).
Предполагается, что посетитель вводит только числа. Предусматривать обработку нечисловых строк в этой задаче необязательно. Мой скрипт:
let num;
while (true) {
let num = prompt("Введите число большее 100",'');
if ( num<=100 ){
alert('Попробуйте ввести заново');
}
else if( num>100||num == null )break;
}
alert("Вы ввели подходящее число");
Данный скрипт не срабатывает , если нажать Отмена. Но ведь при нажатии Отмена, как я понимаю, num == null, результат почему-то все равно получается: Введите число большее 100
Может кто-то разъяснить, что не так делаю ?
Ответы (1 шт):
null < 100 // true При сравнении значений разных типов JavaScript приводит каждое из них к числу.
Можно перенести сравнение с (else if) выше в условие (if) для того чтобы проверить в первую очередь нажал ли клиент "Отмену"(null)
while (true) {
let num = prompt('Введите число больше 100', '');
if (num !== null && num <= 100 ) {
alert('Попробуйте ввести заново');
} else {
break;
}
}