В числовом контексте пробел конвертируется в ноль.И ноль явно ниже, чем 5.
alert(' ' * 1); // Shows 0
Чтобы решить эту проблему, вы можете использовать parseFloat
, который будет печатать NaN
для пробелов.Другой вариант - использовать RegExps, чтобы гарантировать, что входные данные состоят из целых чисел:
var val = prompt("Enter a Number between 5 and 10", "");
val = /\d+/.exec(val); // Numbers if valid, null otherwise
// OR, instead of the previous line:
if (/\D/.test(val) { // If the input contains a non-digit character, error.
throw "ex4";
} else ...
Для преобразования строки в число см. это сравнение методов преобразования чисел .Вы можете видеть, что происходит для данного ввода.