JS闭包-三种方法实现fnArr[i]() 输出 i

下面的代码输出多少?修改代码让fnArri 输出 i。使用两种以上的方法

var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        fnArr[i] =  function(){
            return i;
        };
    }
    console.log( fnArr[3]() );  //10

实现:

方法一:
var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        fnArr[i] =  (function(){
           var n = i;
           return function(){
           return n;
            }
        })();
    }
    console.log( fnArr[3]() ); //3

方法二:
var fnArr = [];
    for (var i = 0; i < 10; i ++) {
        (function(n){
           fnArr[i]=function(){
            return n;
           }
        })(i)
    }
    console.log( fnArr[3]() );  //3

方法三:
var fnArr = [];
    for (var i =0 ; i<10; i++){
       (function(){
          var n = i;
          fnArr[i]= function(){
            return n;
          }
       })()
    }
    console.log( fnArr[3]() );  //3
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Android 自定义View的各种姿势1 Activity的显示之ViewRootImpl详解 Activity...
    passiontim阅读 173,956评论 25 709
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,099评论 19 139
  • 根据企业不同的战略目标、市场导向、发展阶段、业务需求、领导支持程度,对于企业家培训课程体系的搭建大致可以分为观望型...
    fengtian89阅读 957评论 0 0
  • 這世間有如此多的良人 她們是唱歌的孩子 歌唱最美的晚霞 她們是畫畫的孩子 劃出蒼韌的紋路 她們是詩的孩子 吟寫此生...
    爱跑的濯濯阅读 201评论 0 2