为什么var可以重复声明?

请先看一段代码

下面的这段代码输出的是undefined吗?

var haha = '666';
var haha;

console.log(haha);

上面的这段代码实际输出的是666,而不是undefined,这是为什么呢?为什么var又可以重复定义呢?

var为什么可以重复定义?

我们首先介绍下JS代码的运行机制:

  1. 引擎负责整个代码的编译和执行。
  2. 编译器负责语法分析、词法分析、代码生成等。
  3. 作用域负责维护所有的标识符变量。

编译器在对代码进行拆解的时候,遇到了var定义的变量会首先询问作用域中是否存在这个变量,不存在就让作用域创建变量,如果存在就忽略var继续编译,赋值时haha='666’被执行,第二个var haha被编译器忽略了。

猜你喜欢

转载自blog.csdn.net/sinat_41696687/article/details/124214921