为何《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
相关产品推荐
相关产品推荐

