在此示例中我需要使用 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
当我使用 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