JS 中的 Hoisting
2020-11-26 本文已影响0人
TralafalgarV
拜读Lydia Hallie 的文章有感。遂记录一笔。
当JS引擎获取我们的脚本时,它要做的第一件事就是为代码中的标识符分配内存。 注意此时没有执行任何代码。
- 函数变量存储的是函数在内存中的引用地址;
-
let
、const
声明的变量,存储的是<uninitialized>
; -
var
声明的变量,存储的是undefined
;
![](https://img.haomeiwen.com/i2029444/cf8adf6e625a4d9f.gif)
![](https://img.haomeiwen.com/i2029444/7058f26a563f5806.gif)
现在创建阶段已经完成,我们可以执行代码了。在let
、const
关键字,真正开始声明变量之前的区域,被称为暂时性死区。当我们想要在此区域提前引用对应变量时,会提示ReferenceError
。
![](https://img.haomeiwen.com/i2029444/435362805e849744.gif)