前几天面试遇到这个问题:
var a = 2;
function b() {
console.log(a);
a = 4;
var a = 3;
console.log(a);
}
b();
console.log(a);
打印结果是undefined,2,3
其实我知道作用域会变量提升,把var放到最前面,可是面试的时候我又和自己较上劲了,我想不通为什么函数如果在下面声明的整个作用域都可以用,而变量却不可以。
于是写了4,2,3。懊悔,还是自己理解的不够深刻吧。
网友评论