版权声明:本文为博主原创文章,未经博主允许不得转载。 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]()
4
方法一:利用闭包
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;
}