You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

为何《JavaScript设计模式》称var为块级作用域变量?

关于var作用域的疑问解答

你完全是对的——var并不是块级作用域变量,这应该是原文的一处笔误。

三者作用域的正确差异:

  • var:属于函数作用域(全局声明时则为全局作用域),它的作用域绑定当前执行上下文(函数或全局环境),不受花括号{}包裹的代码块限制。比如在if、for这类块内用var声明的变量,在块外依然能访问。
  • let和const:真正的块级作用域变量/常量,仅在声明它们的花括号块(if块、for块、函数块等)内可访问,块外无法引用。

原文中将var描述为块级作用域是错误的,大概率是作者的疏忽。实际开发中,var的变量提升和非块级特性常引发意外问题,这也是如今更推荐使用let和const的原因之一。

示例代码验证:

// var不受块限制
if (true) {
  var testVar = "hello";
}
console.log(testVar); // 输出 "hello"

// let受块限制
if (true) {
  let testLet = "world";
}
console.log(testLet); // 报错:testLet is not defined

内容的提问来源于stack exchange,提问作者Neon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 19:05:29