美文网首页
JS闭包-三种方法实现fnArr[i]() 输出 i

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

作者: Maggie_77 | 来源:发表于2016-12-18 19:42 被阅读0次

    下面的代码输出多少?修改代码让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
    

    相关文章

      网友评论

          本文标题:JS闭包-三种方法实现fnArr[i]() 输出 i

          本文链接:https://www.haomeiwen.com/subject/zerzmttx.html