前言
经过前几章的学习,相信大家已经很熟悉作用域的概念了,前几章我们介绍了关于函数作用域的相关概念,这一章我们将进一步来学习javascript编译执行过程中的特殊机制,变量提升机制
正文
变量提升
包括变量和函数在内的所有声明都会在任何代码被执行前首先被处理。当你看到 var a = 2; 时,可能会认为这是一个声明。但 JavaScript 实际上会将其看成两个声明:var a; 和 a = 2;。第一个定义声明是在编译阶段进行的。第二个赋值声明会被留在原地等待执行阶段。比如下面的例子:
console.log(a);
var a = 2;
实际执行的是:
var a;
console.log(a);
a = 2;