Есть две переменные, в которые записываются данные:
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
.
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
Разрабатывается приложение на react native под ios и возникла следующая проблема: Нужно в личной кабинете сделать редактирование полейПредполагается,...
Есть задача сделать уменьшение скидки по времени при открытии модального окнаПри закрытии модального окна скидка должна останавливаться...