关于 JavaScript 中的作用域

2024-01-04

我需要一些有关 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
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

关于 JavaScript 中的作用域 的相关文章

随机推荐