bug收集:专门解决与收集bug的网站
网址:www.bugshouji.com
01
问题
今天分享一个关于变量提升的简单问题, 请看下题,请回答三个console.log分别打印的值是多少?(请先在心里得出结论)
(function(){
console.log(a)
a = 5;
console.log(window.a)
var a =20
console.log(a)
})()
02
答案 & 解析
undefined
undefined
20
解析:
第一个输出:undefined , 因为函数内部var a,变量声明会提升到函数的最前面,但赋值不会提升,所以输出undefined
第二个输出:undefined, 大部分朋友应该就是这里拿不太准,那是因为大家都知道在函数内部没有用var 申明,相当于申明全局变量。
但是,注意因为函数内部有变量a 的申明,所以这里的a=5 , 其实a 已经存在了,就是局部申明提升上去的变量a , 所以,全局变量根本没有为a的变量。
所以,window.a 输出的结果也为undefined
第三个输出:20,这个简单就不明说明了
如果,大家有什么想要具体解析面试题,欢迎大家给我私信留言,我会选择比较经典的面试题进行详细解析。