为什么 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(使用前将#替换为@)