话不多说,先看一段代码
a = 2;
var a;
console.log(a)
结果是 2
console.log(a);
var a = 2;
结果是undefined
现在来答疑解惑
- 按照JS代码的执行顺序应该是从上到下一行行的执行的,真的是这样吗??其实这不是完全正确的。
- 正确的思路是,包括变量,函数在内的所有声明都会在任何代码在执行前首先被处理。
- 当你看到var a = 2 时你可能会理解成这是一个声明,但JS在执行时实际上会将其看成两个声明 var a 和 a = 2
- 第一个var a 是在代码的编译阶段执行的。第二个赋值声明 a = 2 会被留在原地等待执行阶段来执行
所以我们的第一个代码片段会按照以下形式进行处理
var a;
a = 2;
console.log(a)
所以最后的结果就是2
按照以上的逻辑看第二个代码片段,则是如下的这种形式
var a;
console.log(a);
a = 2;
所以结果是undefined
因此打个比方,这个过程好像变量的或者是函数的声明从他们出现的位置被移动到了最上面,这个过程就叫做提升
PS:以下是我的个人博客小站,欢迎关注哦
[戳我戳我](https://www.mingyangli.com/blog)