console.log()无法按预期工作

时间:2016-02-03 19:03:52

标签: javascript

问题:可以安慰什么

var foo = 'outside';

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

logIt();

答案:undefined

有人可以解释为什么会这样。

3 个答案:

答案 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