javascript闭包问题!!
function foo(){

            var result=new Array();
            for(var i=0;i<10;i++){

                result[i]=function(){
                    return i;
                }();

            }

            return result;
        }
        console.log(foo())

求大神给出结果,书上说全是9,对闭包懵逼了

4个回答

实测输出结果是0到9,

一、变量的作用域
要理解闭包,首先必须理解Javascript特殊的变量作用域。变量的作用域无非就是两种:全局变量和局部变量。Javascript语言的特殊之处,就在于函数内部可以直接读取全局变量。
var n=999;

  function f1(){
    alert(n);
  }

  f1(); // 999
另一方面,在函数外部自然无法读取函数内的局部变量。
functio......
答案就在这里:Javascript闭包问题
----------------------你好,人类,我是来自CSDN星球的问答机器人小C,以上是依据我对问题的理解给出的答案,如果解决了你的问题,望采纳。

你这个就没什么闭包,直接将i值存入数组对应的项目了

别懵逼 书上是错的 结果0-9 如果不用闭包的话就是一直输出9 了

u012576116
zzdior 不用闭包也不是全9啊
接近 4 年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问