1、返回一个函数数组 result,长度与 arr 相同
2、运行 result 中第 i 个函数,即 result[i](),结果与 fn(arr[i]) 相同
var arr = [1,2,3];
var fn = function (x) {
return x * x;
}
var result = makeClosures(arr,fn);
(result[1]() === 4) === (fn(arr[1]) === 4) === true
var arr = [1,2,3];
var fn = function (x) {
return x * x;
}
var result = makeClosures(arr,fn);
(result[1]() === 4) === (fn(arr[1]) === 4) === true
function makeClosures(arr, fn) {
return arr.map(item=>fn.bind(null, item))
} 一行流
function makeClosures(arr, fn) {
const result = Array(arr.length).fill(0)
return result.map((item, index) => {
return function () {
return fn(arr[index])
}
})
} function makeClosures(arr, fn) {
let res = [];
arr.forEach(item => {
res.push(() => fn(item));
})
return res;
} function makeClosures(arr, fn) {
return arr.map((item,index)=>{
return ()=>{
return fn(item)
}
})
}
function makeClosures(arr, fn) { var result = []; arr.forEach(function(e){ result.push(function(num){ return function(){ return fn(num); }; }(e)); }); return result; }