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