JavaScript变量提升详解

话不多说,先看一段代码

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)

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值