问题:可以安慰什么
var foo = 'outside';
function logIt() {
console.log(foo);
var foo = 'inside';
}
logIt();
答案:undefined
有人可以解释为什么会这样。
答案 0 :(得分:5)
var
语句被悬挂。
在函数内只能访问一个变量:在行var foo = 'inside';
上创建的变量。
当您记录它的值时,请在分配之前执行此操作,因此它是undefined
。
您无法从函数中访问同名的全局变量,因为您已通过声明同名的本地范围变量来掩盖它。
答案 1 :(得分:3)
var foo = 'outside';
function logIt() {
var foo;
console.log(foo);
foo = 'inside';
}
logIt();
这就是脚本的解释方式。因此它提供了undefined
这称为top-hoisting。
通过这种方式重新声明foo
会将其设置为undefined
答案 2 :(得分:0)
var foo = 'outside';
function logIt() {
console.log(window.foo);
var foo = 'inside';
}
logIt();
logIt函数假定foo
在其范围内。要使用全局变量,您需要使用window.variable_name