猿问

重复声明同一个变量

下面有两个小栗子


var a = 1;

var a = 2;

console.log(a); // 2

var a = 1;

var a;

console.log(a); //1

上面第一个栗子很好理解,再次声明同一个变量会覆盖掉之前的变量,但是第二个栗子为什么不是输出undefined呢?


我有一个理解方式不知道对不对,可以从变量提升的角度去理解,上面的代码经过变量提升就可以改写成下面这样,因为变量提升只提升声明不提升赋值


var a;

var a;

a = 1;

console.log(a);

刚刚去查了资料,参考《JavaScript高级程序设计》第7.3章节,原话如下


JavaScript从来不会告诉你是否多次声明了同一个变量;遇到这种情况,它只会对后续的声明视而不见(不过,它会执行后续声明中的变量初始化)。


慕妹3146593
浏览 817回答 2
2回答

临摹微笑

你的理解是对的,就是变量提升了

慕容3067478

忍不住立马去查了资料,参考《JavaScript高级程序设计》第7.3章节,原话如下JavaScript从来不会告诉你是否多次声明了同一个变量;遇到这种情况,它只会对后续的声明视而不见(不过,它会执行后续声明中的变量初始化)。因此只是JavaScript的特性,和变量提升无关。
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答