我提前道歉,这可能是之前在StackOverflow上讨论过的,我只是不知道这叫什么,所以我找不到满意的答案。JavaScript条件执行和可变范围
但是,我正在学习JavaScript和一本名为“Eloquent JavaScript”的书。在那里我找到了下面这段代码,它反复提示用户输入他的名字,直到他做到了。
while (!input) {
var input = prompt("Who are you?");
}
我只是不明白为什么这实际上工作,而不是提出一个错误。在评估条件表达式时,不存在称为输入的变量。如果我理解正确,则没有可能进行评估,这通常会阻止进一步执行。 while循环体中的语句然后创建一个名为输入的变量仍在执行中。
然而,这让我着急,所以我想这:
while (!bool) {
console.log("Hi");
var bool = true;
}
这是更加古怪。当涉及到条件表达式时,它的问题是相同的: bool正在循环体的范围内创建,在之后的条件评估。其次,布尔不断设置为true,但代码仍然执行一次,换句话说,嗨正在打印一次。
我很困惑,并希望得到一些帮助。 ;)
那么,在你的第二个的情况下,打印后'“嗨”''bool'是'FALSE'因此'而(假)' –
相关问题! :http://stackoverflow.com/questions/500431/javascript-variable-scope – ajp15243
是的,但即使在打印“你好”之前,情况就是如此。它为什么一次打印出来?它从未被印过,对吧? – lambdarookie