为什么以下代码段的输出未定义,5?
var a=5;
(function(){
console.log(a);
var a= b = 10;
})();
console.log(a);
javascript中有一种叫做提升的东西。提升是指在一个范围内声明的所有变量都被带到该范围的顶部,并在那里声明,然后在其相应的行上赋值。
以上代码与相同
var a=5;
(function(){
var a;
console.log(a);
a= b = 10;
})();
console.log(a);
在上面的函数中,当var a;
被声明但未初始化时,它将自动获得对undefined
的赋值。因此,您可以在第一个日志中看到undefined
。
在第二个日志中,您可以看到5
,因为前面的变量a
在该函数内部,而在外部不可用。在外部日志中,将记录全局范围内的a
。