作为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
不知道理解的是否正确。如果不正确的话,希望能够解释一下!
慕森王
相关分类