JavaScript实现词法作用域吗?
JavaScript实现词法作用域吗?
这个问题已经有答案了:
为什么返回2而不是1?似乎第二个\"var\"被静默忽略了。
function foo() { var local = 1; { var local = 2; } return local; } foo() /* 2 */
admin 更改状态以发布 2023年5月23日
来自 MDN :
JavaScript 没有块级作用域;相反,声明在块中的变量局限于包含该块的函数(或全局作用域)。
在 JavaScript 中,变量的作用域是指在它声明的整个函数中(或全局作用域)生效,因此在此处只有一个名为 local
的变量。
你的代码相当于
function foo() { var local; local = 1; { local = 2; } return local; } foo()
请注意,ES6(JavaScript 的新标准)引入了 let
的词法作用域,但 目前尚不支持。