39-使用闭包【牛客网-在线编程-前端篇】
一、题目描述
实现函数 makeClosures,调用之后满足如下条件:
- 返回一个函数数组 result,长度与 arr 相同
- 运行 result 中第 i 个函数,即 resulti,结果与
fn(arr[i]) 相同
二、主流的三类参考答案
参考来源:牛客网题目讨论区
1.立即执行函数——即使用更多的闭包
function makeClosures(arr, fn) {
let result = [];
for(var i = 0 ; i < arr.length; i++){
result[i] = (function(a) {
return function(){
return fn(a);}
})(arr[i]);
}
return result;
}
2.let 代替 var——es6新增的“块作用域”的应用
function makeClosures(arr, fn) {