Почему не работает alert() и следующие за ним команды?
let valid = true;
let x = prompt("Введите x", "");
if (x == null || x == "") {
alert("Вы не ввели x");
valid = false;
}
if (valid == true) {
let n = prompt("Введите n", "");
if (n == null || n == "") {
alert("Вы не ввели n");
valid = false;
}
alert("n = " + n);
alert(valid);
}
function pow(x, n) {
let poweredNumber = 1;
for (let i = 0; i < n; i++) {
poweredNumber *= x;
}
return poweredNumber;
}
alert("Перед if");
if (valid == true) {
alert("В if");
alert(pow(x, n)); //Почему-то не срабатывает
}
alert("После if"); //Почему-то не срабатывает
Не работают части, которые я отметил комментариями. Но причем не работает только, если объявить переменную valid и прописать первые два if'а. Если valid и первых двух if'ов не будет, то всё ОК. По сути всё должно работать, но что-то не так...
Ответы (1 шт):
Автор решения: Grundy
→ Ссылка
переменная n объявлена с помощью let, следовательно она видна только внутри блок if.
Поэтому при вызове alert(pow(x, n)) происходит ошибка, так как нет переменной n.
Для решения достаточно вынести объявление n из if, либо заменить let на var