在此示例中我需要使用 var 变量还是 let 变量?

Do i need to use var variable or let variable in this example?

当我使用 var 而不是 let 时,以下代码可以正常工作并提示用户键入文本,直到他输入单词“exit”。 然而,当我第二次输入“exit”这个词时,使用 let 却没有。

let text = prompt("write something");

while(text !== "exit")
{
    let text = prompt("write something");
}

console.log("end of program);

重置文本时不要使用任何东西

let text = prompt("write something");

while(text !== "exit")
{
    text = prompt("write something"); // nothing, uses text in outer scope
}

console.log("end of program);

当您在 while 循环中使用 'let' 时,您正在创建一个单独的变量 作用域为该语句块。当您对函数使用 var, it is hoisted 时,或者如果不在函数中则对全局对象使用 var, it is hoisted (或者如果您不使用 var、let 或 const 并且只是尝试使用变量而不声明它)。由于变量在使用 var 的同一函数(或全局范围)中,因此它们指的是同一事物。

使用 let 时,变量的作用域为代码块。因此,while 语句块内的 'text' 变量不会引用在该块外声明并在 while 条件中使用的同一个 'text' 变量。这是 link:

中的示例
let x = 1;

if (x === 1) {
  let x = 2;

  console.log(x);
  // expected output: 2
}

console.log(x);
// expected output: 1