2 回答

TA貢獻1820條經驗 獲得超9個贊
function makeClosures(arr, fn) {
let result = new Array();
// 如果用var,注意閉包問題
for (let i = 0, len = arr.length; i < len; i++) {
result[i] = function () {
return fn(arr[i]);
};
}
return result;
}
let testArr = [1, 2, 3]
let fn = function (x) {
return x * x;
}
// 條件一, 返回一個函數數組,長度和arr相同
let result = makeClosures([1, 2, 3], fn);
// 條件二, result[i]() 和 fn(arr[i]) 結果相同
console.log('測試 i = 0', 'result[i]: ', result[0](), ' fn(arr[i]): ', fn(testArr[0])) // 1
console.log('測試 i = 1', 'result[i]: ', result[1](), ' fn(arr[i]): ', fn(testArr[1])) // 4
console.log('測試 i = 2', 'result[i]: ', result[2](), ' fn(arr[i]): ', fn(testArr[2])) // 9

TA貢獻1943條經驗 獲得超7個贊
你這題目是不是有問題
搜了一下 輸出是個函數 result[1]()的結果是4
輸入例子:
[1, 2, 3], function (x) {
return x * x;
}
輸出例子:result[1]()
4
- 2 回答
- 0 關注
- 649 瀏覽
添加回答
舉報