JavaScript 提升和范围

2023-12-01

为什么 foo() 函数会记录日志undefined? 首先text变量是全局变量,所以foo()应该有权访问它。

var text = "outside";

function foo() {
    console.log(text);
    var text = "inside";
}

foo();

尽管var声明是在console.log()语句,声明被提升到函数的开头。所以这声明了一个隐藏全局变量的局部变量。但是,直到您实际到达该语句(位于语句之后)时,初始化才会发生。console.log()陈述。

所以你的函数相当于:

function foo() {
    var text;
    console.log(text);
    text = 'inside';
}

如果您没有使用var声明然后您将继续使用全局变量,并且直到声明之后才会发生重新分配console.log().

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

JavaScript 提升和范围 的相关文章