JavaScript while循环在var声明之前接受条件

Sha*_*ble 2 javascript var while-loop

我很惊讶以下代码有效:

while(fred !== "stop"){
    var fred = prompt("Should I stop or go?")
};
Run Code Online (Sandbox Code Playgroud)

我在do while循环中理解这一点:

do {
    code to be executed at least once
?}
while (condition);
Run Code Online (Sandbox Code Playgroud)

在函数声明fred为变量之前,JavaScript如何设置条件?

其他问题我读过涉及到VAR声明的条件.

gpe*_*che 5

来自Mozilla文档:

变量声明,无论它们出现在何处,都会在执行任何代码之前进行处理.

因为在执行任何代码之前处理变量声明(以及一般的声明),所以在代码中的任何地方声明变量等同于在顶部声明它.这也意味着变量可以在声明之前使用.此行为称为"提升",因为看起来变量声明被移动到函数或全局代码的顶部.

和警告:

重要的是要指出提升将影响变量声明,但不会影响其值的初始化.达到赋值语句时,确实会赋值: