JavaScript中未提前声明的let变量初始化值是什么?
let变量未完成声明阶段的初始化规则解答
不存在所谓的初始化值,在let声明语句执行完成前访问该变量,会直接抛出ReferenceError错误。
这个特性是JS的 暂时性死区(TDZ) 规则决定的:let和const虽然会被提升到作用域顶部,但提升后不会自动初始化任何值,从进入作用域到声明语句执行完成的这段时间,访问这两个关键字声明的变量都会直接报错。
三类变量声明的初始化差异
var:提升后自动初始化为undefined,声明前访问也能拿到undefined不会报错let:提升后无初始化值,声明前访问直接报错;执行声明语句时如果没有赋值,才会初始化为undefinedconst:提升后无初始化值,声明前访问直接报错;声明时必须赋值,后续也不能修改引用
你提到的let初始化规则可以补全为:
a) 声明语句执行前:无初始化值,访问抛出ReferenceError b) 已声明则按赋值完成初始化,无赋值则初始化为undefined
内容的提问来源于stack exchange,提问作者monkeDB
相关产品推荐
相关产品推荐

