冉冉说
把闭包的概念代进去看吧:函数内部嵌套函数——>就是for实现的定义在数组上的函数。在外部引用函数内部的局部变量——>var arr = F();//获得了包含三个函数的数组arr[0]();
arr[1]();
arr[2]();//这三个函数就实现了在函数外部引用函数内部的变量结果为3的原因——>因为js唯一的局部作用域就是函数,因而F中的for循环并没有将i作为局部变量传到那三个函数中去,因此那三个函数依然是引用的F中的i,在循环体结束时,i的值递增到了3,因此在整个F环境下i的值都为3了,所以在外部引用到arr中的任何一个函数,都是对这个i的引用,因此所有的值都为3。