白狗子的博客

「天上浮云如白衣,斯须改变如苍狗。」——杜甫

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 规则。

© 2025 My Blog. Built with Nuxt.js v4