#javascript #while-loop #var #let
#javascript #цикл while #var #пусть
Вопрос:
Когда я использую var вместо let, следующий код работает нормально и предлагает пользователю вводить текст, пока он не введет слово «exit». Однако, используя let, когда я набираю второй раз слово «exit», этого не происходит.
let text = prompt("write something");
while(text !== "exit")
{
let text = prompt("write something");
}
console.log("end of program);
Комментарии:
1. Также вы забыли
"
внизуconsole.log(...)
2. Рекомендуемое чтение: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/… Безусловно, полезно понимать такие базовые концепции языка, который вы используете.
Ответ №1:
Ничего не используйте при сбросе текста
let text = prompt("write something");
while(text !== "exit")
{
text = prompt("write something"); // nothing, uses text in outer scope
}
console.log("end of program);
Когда вы используете ‘let’ в цикле while, вы создаете отдельную переменную
область действия ограничена этим блоком инструкций. Когда вы используете var, он передается функции или глобальному объекту, если не в функции (или если вы не используете var, let или const и просто пытаетесь использовать переменную без ее объявления). Поскольку переменные находятся в одной и той же функции (или глобальной области видимости), использующей var, они ссылаются на одно и то же.
При использовании let область действия переменной ограничивается блоком кода. Таким образом, переменная ‘text’ внутри блока оператора while не ссылается на ту же переменную ‘text’, объявленную вне этого блока и используемую в условии while. Вот пример из ссылки:
let x = 1;
if (x === 1) {
let x = 2;
console.log(x);
// expected output: 2
}
console.log(x);
// expected output: 1