编程语言
首页 > 编程语言> > 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

标签:scoping,javascript
来源: https://codeday.me/bug/20190724/1520597.html