猿问

求解一个关于js 变量声明和定义以及函数调用的问题

作为Js初学者而言,这是一个令我费解的问题,代码如下:
var a = 'a';
(function(){
console.log(a);
var a = 'b';
})();

如下是在chrome浏览器中调用后的结果:

自己的理解是,Js在编译时会对变量和函数进行扫描,然后再按照顺序执行,在自执行函数内部,首先先声明var a,再按照顺序执行,所以上面的代码可以看成是如下执行顺序:
var a = 'a';
(function(){
var a;
console.log(a);
var a = 'b';
})();

所以输出的是undefined

不知道理解的是否正确。如果不正确的话,希望能够解释一下!


森栏
浏览 469回答 1
1回答

慕森王

正解,函数内部声明提前,赋值保持不变,执行console.log时只声明了,而没有赋值
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答