声明提升
执行这段代码,输出什么结果。
function test() { console.log(a); console.log(foo()); var a = 1; function foo() { return 2; } }test();
答案请认真思考往下翻
这段代码的结果是 undefined 和 2。
原因是,变量和函数的声明都被提前了(移到了函数的顶部),但变量不分配任何值。因此,在打印变量的时候,它在函数中存在(它被声明了),但它仍然是undefined 。表示换句话说,上面的代码等同于以下内容:
function test() { var a; function foo() { return 2; } console.log(a); console.log(foo()); a = 1; } test();