Есть две переменные, в которые записываются данные:
let finance = +prompt('Ваш бюджет?');
while (finance === "" || isNaN(finance) || finance === null) {
let finance = prompt('Ваш бюджет?');
}
let name = prompt('Название вашего магазина?');
while (name == "" || name == null) {
let name = prompt('Название вашего магазина?');
}
При вводе в первую переменную все записывается без проблем. Во вторую тоже, но если при вводе во вторую переменную сначала нажать "Отмена" или "Ок" и потом ввести без ошибок, то она зацикливается и скрипт не идет дальше, хотя первая переменная работает нормально. В чем проблема?
let.Так как с использованием этого ключевого слова область видимости ограничена блоком, а не функцией - значение введенное внутри цикла никак не совпадает с тем, что проверяется в условии.
Так как используется унарный оператор + - результат prompt сразу приводится к числу.
Приведение к числу работает согласно таблице в которой отмечено, что в случае null результатом будет +0, пустая строка, либо строка только из пробелов будет приведена к 0.
Поэтому при нажатии отмены или вводе пустой строки ни одно из условий не выполняется.
Стоит отметить, что при вводе строки, которую невозможно привести к числу в первом случае так же будет зацикливание, так как результат приведения в этом случае будет NaN.
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости