zoukankan      html  css  js  c++  java
  • 闭包循环问题-for循环只显示最后一个i的值

    如下,正常应该输出是的1,但是下面的输出结果是5
    原因(参照js中的预解释篇)
    首先会对变量进行预解释,带有var和function的变量(等号左边的,因为右边属于定义值)
    上面在预解释中声明了a和i,然后循环中对a[i]进行定义,但是未执行即
    a[0] = function(){                     a[1] = function(){                            
         return i;                                   return i;               
    }                                               }                                             ...
    当循环结束时调用a[1]()此时要返回i,这时会在同级中寻找i,未找到则追溯到上一级,这时上一级的i已经被加加成4,则无论是数组中的哪个值返回的都会是5
     
    在解决这个问题时常常会使用立即执行函数的方式
    因为立即执行函数在4-8行时声明、定义、执行一起完成了,所以找到的i就是当前的值
     
     
    相关文档
  • 相关阅读:
    第11次作业
    第十次实验
    第九次作业
    第八次实验
    第七次作业
    第六次作业
    作业
    JAVA实验三
    JAVA实验二
    JAVA实验一
  • 原文地址:https://www.cnblogs.com/wzy1569178479/p/7341171.html
Copyright © 2011-2022 走看看