为什么变量被初始化为未定义的事件而不执行块?

Bal*_*ath 0 javascript

可能重复:
JavaScript变量范围

var flag = false;
if(flag === true)
{
     var you = "great";
}
Run Code Online (Sandbox Code Playgroud)

变量"you"初始化为undefined,它显示undefined而不是在打印时显示引用错误.为什么?

dty*_*dty 7

在Javascript中,所有变量都被"提升"到它们声明的函数/作用域的顶部.也就是说,你的代码对于编译器看起来像这样:

var flag = false;
var you;
if (flag === true)
{
    you = "great"
}
Run Code Online (Sandbox Code Playgroud)