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) } }) }