首页 > 解决方案 > 当两个同名的变量提升时会发生什么?

问题描述

因此,如果我这样声明两个变量:

var a = 5;
var b = 10;

Javascript 编译代码,直到赋值发生,这些变量都是undefined.

但如果我这样写:

var a = 5;
var a = 10;

当这些变量提升时会发生什么?它们都有名称a并且它们是undefined?或者它可能是一个变量并且undefined在其中写入了两次?

标签: javascripthoisting

解决方案


提升在这里并不重要。您不能在同一范围内拥有两个具有相同名称的变量。写多少次var a,只有一个变量a,它的提升与你有一个变量没有什么不同var a

这段代码...

function() {
  var a = 5;
  var a = 10;
}

在功能上等同于此代码,并a提升:

function () {
  var a;
  a = 5;
  a = 10;
}

推荐阅读