问题
题目地址:使用闭包
题目描述
实现函数 makeClosures,调用之后满足如下条件:
1、返回一个函数数组 result,长度与 arr 相同
2、运行 result 中第 i 个函数,即 resulti,结果与 fn(arr[i]) 相同
示例
输入:
[1, 2, 3], function (x) {
return x * x;
}
输出:
4
实现
function makeClosures(arr, fn) {
let result = [];
for (let i of arr) {
result.push(function(){
return fn(i)
});
}
return result;
}
//测试:
let result = makeClosures([1, 2, 3], function (x) {
return x * x;
});
console.log(result[1]()); //输出4
分析
注意要求数组里添加的是一个函数,而不是fn(i)的返回值,容易误写成:
result.push(fn(i))