实现函数 makeClosures,调用之后满足如下条件: 1、返回一个函数数组 result,长度与 arr 相同 2、运行 result 中第 i 个函数,即 result[i](),结果与 fn

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/baidu_39067385/article/details/81545859

实现函数 makeClosures,调用之后满足如下条件:
1、返回一个函数数组 result,长度与 arr 相同
2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同

 输入例子:

[1, 2, 3], function (x) { 
    return x * x; 
}

输出例子:

result[1]()

方法一:利用闭包 

function makeClosures(arr, fn) {
    var result=new Array();
    for(var i=0;i<arr.length;i++){
        result[i]=function(num){
            return function(){
                return fn(num)
            };
        }(arr[i]);
    }
    return result;
}

方法二:采用es6的let声明i变量

function makeClosures(arr, fn) {
    var result=new Array();
    for(let i=0;i<arr.length;i++){
        result[i]=fn(arr[i])
    }
    return result;
}

猜你喜欢

转载自blog.csdn.net/baidu_39067385/article/details/81545859
今日推荐