2 louiset louiset 于 2017.08.31 16:47 提问

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

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

4个回答

zy841958835
zy841958835   Ds   Rxr 2017.08.31 16:52

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

louiset
louiset 好的。我去看看。谢谢!
3 个月之前 回复
HKFight
HKFight   2017.08.31 17:25

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

zhangli2513
zhangli2513   2017.09.01 20:26

图片说明

 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中
 }
HUSHILIN001
HUSHILIN001   2017.09.02 17:37

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

Csdn user default icon
上传中...
上传图片
插入图片