为什么foo()函数会记录undefined
?
第一个text
变量是一个全局变量,因此foo()
应该可以访问它。
var text = "outside";
function foo() {
console.log(text);
var text = "inside";
}
foo();
答案 0 :(得分:4)
即使var
语句在console.log()
语句之后,声明也会提升到函数的开头。所以这声明了一个影响全局变量的局部变量。但是直到你真正进入console.log()
语句之后的语句才会进行初始化。
所以你的功能相当于:
function foo() {
var text;
console.log(text);
text = 'inside';
}
如果您没有使用var
声明,那么您将继续使用全局变量,并且在console.log()
之后才会重新分配。