Почему такой скрипт не работает ? Не пойму где ошибка

Исходная задача: Напишите цикл, который предлагает 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 шт):

Автор решения: Meteora
null < 100   //  true При сравнении значений разных типов JavaScript приводит каждое из них к числу.

Можно перенести сравнение с (else if) выше в условие (if) для того чтобы проверить в первую очередь нажал ли клиент "Отмену"(null)

 while (true) {
  let num = prompt('Введите число больше 100', '');
  if (num !== null && num <= 100  ) { 
    alert('Попробуйте ввести заново');
  } else {
    break;
  }
}
→ Ссылка