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

你可能感兴趣的:(JS闭包-三种方法实现fnArr[i]() 输出 i)