JavaScript是否实现了词汇范围界定?
这个问题在这里已经有了答案:
在JavaScript中只有函数级作用域和全局作用域。 您无法创建块范围,也不会添加任何特殊含义,也不会创建任何范围。
这就是你的代码如何结束
function foo()
{
var local = 1;
local = 2;
return local;
}
foo();
在ES6中,您可以借助Let来创建块级示波器。 ES6尚未支持。 这里更多
来自MDN:
JavaScript没有块语句范围; 相反,在块中声明的变量对块所在的函数(或全局范围)是本地的。
JavaScript中变量的范围是它声明的全部函数(或全局范围),所以在这里你只有一个变量local
。
你的代码相当于
function foo()
{
var local;
local = 1;
{
local = 2;
}
return local;
}
foo()
请注意,ES6(JavaScript的新规范)确实引入了let
的词法范围,但它还没有真正可用。