var变量的生命周期
当引擎访问变量的时候,它们的生命周期包括下面几个阶段:
- 声明阶段:在作用域中注册一个变量
- 初始化阶段:分配内存,给作用域中的变量创建绑定。在这个阶段,变量自动地被初始化为
undefined
- 赋值阶段:给已经初始化过的变量赋值
通过声明阶段但是没有到达初始化阶段的变量是处于未定义的状态。
let变量的生命周期
提升就是变量在作用域顶部进行声明和初始化。但是let
的生命周期将声明和初始化两个阶段解耦了。解耦让提升这个术语失效了。
两个阶段中间的间隙创建了暂时性死区,在初始化之前,变量不能被访问。
函数声明的生命周期
在作用域里面,在所有语句执行之前,函数通过了三个阶段:声明、初始化、赋值。
作者:我很可爱你信不信
链接:https://juejin.im/post/5aa631ab5188255587233214
来源:掘金
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。