Javascript console.log()未按预期工作
问题:有什么可以安慰的Javascript console.log()未按预期工作,javascript,Javascript,问题:有什么可以安慰的 var foo = 'outside'; function logIt() { console.log(foo); var foo = 'inside'; } logIt(); 回答:未定义 var foo = 'outside'; function logIt() { console.log(window.foo); var foo = 'inside'; } logIt(); 有人能解释为什么会发生这种情况。var语句被挂起
var foo = 'outside';
function logIt() {
console.log(foo);
var foo = 'inside';
}
logIt();
回答:未定义
var foo = 'outside';
function logIt() {
console.log(window.foo);
var foo = 'inside';
}
logIt();
有人能解释为什么会发生这种情况。
var
语句被挂起
函数中只有一个变量可以访问:在var foo='inside'行上创建的变量代码>
当您记录它的值时,您是在赋值之前进行的,因此它是未定义的
您无法从函数中访问同名的全局变量,因为您已通过声明同名的局部作用域变量来屏蔽它
var foo = 'outside';
function logIt() {
var foo;
console.log(foo);
foo = 'inside';
}
logIt();
这就是脚本的解释方式。因此它给出了undefined
var foo = 'outside';
function logIt() {
console.log(window.foo);
var foo = 'inside';
}
logIt();
这就是所谓的
以这种方式重新声明foo
,将其设置为undefined
var foo = 'outside';
function logIt() {
console.log(window.foo);
var foo = 'inside';
}
logIt();
logIt函数假定foo
在其范围内。要使用全局变量,您需要使用window.variable\u name,因为foo
也定义在logIt
的范围内,并被提升到顶部。我确信我自己正确理解了这一点——他编写的函数与:function logIt(){var foo;console.log(foo);foo=“inside”}@millerbr-用于所有实际用途。对