为什么变量初始化为未定义的事件,尽管块没有执行

Why variable is initialized to undefined eventhough block is not executed?

本文关键字:执行 事件 初始化 变量 未定义 为什么      更新时间:2023-09-26

可能重复:
JavaScript可变范围

var flag = false;
if(flag === true)
{
     var you = "great";
}

变量"you"是用未定义初始化的,它在打印时显示未定义,而不是显示引用错误。为什么?

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

var flag = false;
var you;
if (flag === true)
{
    you = "great"
}