我需要了解关于Javascript中范围问题的一些信息。我知道它支持词法(静态)范围确定,但是,它不支持动态范围确定吗? 如果你知道关于Javascript的范围界定方面的任何事情,你可以和我分享一下吗?Javascript中的范围界定问题
感谢
我需要了解关于Javascript中范围问题的一些信息。我知道它支持词法(静态)范围确定,但是,它不支持动态范围确定吗? 如果你知道关于Javascript的范围界定方面的任何事情,你可以和我分享一下吗?Javascript中的范围界定问题
感谢
我认为你是困惑,因为JavaScript使用静态范围,但在功能层面,而不是在像往常结构语言块级。
var foo = "old";
if (true) {var foo = "new";}
alert (foo == "new")
所以要小心,块没有范围! 这就是为什么你有时会看到循环里面只是功能,对变量的作用域是一个迭代里面:
functions = [];
for(var i=0; i<10; i++) {
(function(){
var local_i = i;
functions[local_i] = function() {return local_i;}
})();
}
functions[2]() // returns 2 and not 10
至于我的理解; Javascript有两种变量,它们是全局变量和局部变量。但是,假设我们有一个名为x的变量,它定义为全局变量,并且在引用x的地方范围的静态父级中定义。在这种情况下,x取全局变量的值。因此,全局变量比本地变量具有更高的优先级。而且,当没有任何全局变量时,x通过静态链发现声明,这让我认为Javascirpt是静态范围的语言。
我对吗?
否...阅读http://www.adequatelygood.com/2010/2/JavaScript-Scoping-and-Histing – w00t 2012-02-10 09:28:16