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,对闭包懵逼了

实测输出结果是0到9,

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

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

  function f1(){
    alert(n);
  }

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

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