作用域变量:代码输出的解释



为什么以下代码段的输出未定义,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

相关内容

  • 没有找到相关文章