开发者社区 问答 正文

var的变量提升底层原理是什么?

已解决

var的变量提升底层原理是什么?

展开
收起
pandacats 2019-12-10 10:48:33 1024 分享 版权
1 条回答
写回答
取消 提交回答
  • 采纳回答

    本质上是由JS编译过程导致的。

    代码的执行分为两个步骤

    对声明进行编译——为var或function分配地址内存。

    执行——进行正常的赋值。

    例如var a = 2; 编译器先不会管a = 2这一赋值步骤。它最先要做的是把var a编译掉,而运算操作留在原地。声明在编译角度上被移动到了作用域的顶端。这就是提升的底层原理。

    拓展话题——TDZ暂时死区

    aVar的值符合提升的原则。aLet就有点意思了,它抛出来的错误实际上就是暂时死区错误。简单来说,从声明到到let的运算步骤为止的这段时空被锁死,外界在此期间寻求访问,不被允许。

    2019-12-10 10:48:47
    赞同 展开评论
问答地址: