如题所述
var a = 10;
(function(){
console.log(a);
var a = 100;
})();
(function(){
var a;
console.log(a);
a = 100;
})();
(function(){
console.log(a);
var a = 100;
})();
结果:输出undefined
解释:
function中有var a = 100;
声明会提升到function最开头,但赋值发生在最后。
上面的代码等价于:
var a = 10;(function(){
var a;
console.log(a);
a = 100;
})();
打印a的时候,a并没有在function内赋值,所以是undefined
温馨提示:答案为网友推荐,仅供参考
第1个回答 2020-08-14
函数内声明提前,赋值位置不变,大括号内console.log(a); var a=100; 可看做 var a;console.log(a); a=100; 只声明变量a,未赋值,故为undefined.