请问一下js作用域的问题。谢谢!

请问一下。function作用域链中保存的变量i为什么是10?。

http://www.cnblogs.com/mrzl/p/4415149.html
会有点难懂 敲下代码就差不多了

在for循环中,只是为每一个数组元素声明了函数,而没有调用。当调用的时候变量 i 已经变成了10

图片说明

 for(var i=0;i<10;i++){
   //定义一个中间变量接收 i 
     var num=i;
    result[num] = function (){
          return num;
        }
 }
  for(var i=0;i<10;i++){
    result[i] = function (num){
          return num;
        }(i);//使用闭包将 i 传入function中
 }

由于异步的问题,所以每次的时候最后都是10,如果你是想要实现块级作用域的,我推荐你使用;let来代替var。mdn上有说明,你可以去试试