Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/shell/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript中的作用域问题_Javascript_Scoping - Fatal编程技术网

Javascript中的作用域问题

Javascript中的作用域问题,javascript,scoping,Javascript,Scoping,我需要一些关于Javascript中作用域问题的信息。我知道它支持词汇(静态)作用域,但是,它不也支持动态作用域吗? 如果您知道Javascript中的作用域,请与我分享好吗 谢谢我想您可能会感到困惑,因为Javascript使用静态作用域,但在函数级别,而不是像通常的结构化语言那样在块级别 var foo = "old"; if (true) {var foo = "new";} alert (foo == "new") 所以要小心,积木不能构成范围! 这就是为什么有时看到循环中包含函数,只

我需要一些关于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
functions=[];

对于(var i=0;i据我所知;Javascript有两种变量,即全局变量和局部变量。但是,假设我们有一个名为x的变量,它被定义为全局变量,并在引用x的位置范围的静态父级中定义。在这种情况下,x取全局变量的值。因此,全局变量具有较高的当没有任何全局变量时,x通过静态链找到声明,这使我认为Javascirpt是静态作用域语言

我在上面对吗