JavaScript-面试-作用域与提升
2026年10月16日·Admin·2 次浏览
面试题:var / let / const?暂时性死区?
作用域
var:函数作用域,无视块级if {}。let/const:块作用域({}、循环体、try/catch)。
变量提升(hoisting)
var:声明提升到作用域顶部,初始化为undefined,故声明前访问不报错(值为 undefined)。let/const:声明也会提升,但在声明前访问会抛ReferenceError(暂时性死区 TDZ),不存在「未初始化可用」窗口。const:必须初始化,且不能重新绑定引用;对象内容可变,引用不可换。
重复声明
同一作用域 var 可重复声明;let/const 不可。
function 声明
函数声明整体提升(声明体一起),故可在声明前调用;函数表达式按 var/let 规则。