let
变量和时间死区
是的,你读得正确 - 在编程世界中有一个称为时间死区的术语,它与僵尸或时移无关,遗憾的是。
在一个区块内,区块开始直到
let
变量初始化
点之间的线条
被称为时间死区。
在该区域中,尝试引用该
let
变量将返回ReferenceError:
这几乎看起来很明显,但传统上,
var
由于称为可变提升的概念
,
变量的表现非常不同。
简而言之,使用var定义的变量会自动“提升”到其执行上下文的最顶层(即:如果它是全局变量,则为函数的顶部或脚本的顶部),即使它已在块的下方初始化。
这意味着您可以在实际声明之前引用变量而不会获得ReferenceError:
undefined
返回
值
,因为提升仅将变量本身移动到顶部,而不是您可能将其设置为的值。
由于可变吊装,以上相当于以下内容:
对于
let
变量,不涉及变量提升,并且
let
在块内物理声明之前
尝试引用
变量将返回ReferenceError。
来自 “ ITPUB博客 ” ,链接:https://blog.itpub.net/69933200/viewspace-2651013/ ,如需转载,请注明出处,否则将追究法律责任。