我提前道歉,这可能之前在StackOverflow上已经讨论过,我只是不知道这叫什么,所以我找不到满意的答案。
但是,我正在学习 JavaScript,并且正在学习一本名为“Eloquent JavaScript”的书。在那里我找到了下面的一段代码,它反复提示用户输入他的名字,直到他这样做。
while (!input) {
var input = prompt("Who are you?");
}
我根本不明白为什么这实际上有效而不是引发错误。在评估条件表达式时,没有称为输入的变量。如果我理解正确,则无法进行评估,这通常会阻止进一步执行。不过,while 循环主体中的语句(然后创建了一个名为input的变量)仍在执行中。
但是,这让我很着急,所以我尝试了这个:
while (!bool) {
console.log("Hi");
var bool = true;
}
这更奇怪了。当涉及到条件表达式时,也是同样的问题:在条件评估之后,在循环体的范围内创建了bool 。其次,bool始终设置为 true,但代码仍被执行一次,换句话说,Hi被打印一次。
我很困惑,希望能得到一些帮助。;)