面试题 003 - xmfenbei/study-javascript GitHub Wiki
问题:
function test() {
console.log(a);
console.log(foo());
var a = 1;
function foo() {
return 2;
}
}
test();
请问控制台上会输出什么?
答案:
输出:undefined 和 2
解析:
变量和函数的声明都被提前至函数体的顶部,而同时变量并没有被赋值。因此,当打印变量a
时,它虽存在于函数体(因为a
已经被声明),但仍然是undefined
。换句话说,上面的代码等同于下面的代码:
function test() {
var a;
function foo() {
return 2;
}
console.log(a);
console.log(foo());
a = 1;
}
test();