2 回答

TA貢獻1786條經驗 獲得超11個贊
數組的每個元素都需要是一個返回其在數組中當前索引的函數:
var x = 2,
fns = [];
(function() {
var x = 5;
for (let i = 0; i < x; i++) {
fns[i] = () => i;
}
})();
// DO NOT MODIFY BELOW CODE
console.log(x * 2 === fns[x * 2]());
// console must show true
確保用 , let
not聲明索引變量var
(var
有問題)。
或者,更實用的是:
const fns = Array.from(
{ length: 5 },
(_, i) => () => i
);
let x = 2;
// DO NOT MODIFY BELOW CODE
console.log(x * 2 === fns[x * 2]());
// console must show true

TA貢獻1865條經驗 獲得超7個贊
您需要一個帶有 IIFE 的閉包來獲取該值。
var x = 2,
fns = [];
(function() {
var x = 5;
for (var i = 0; i < x; i++) {
fns[i] = function (v) {
return function () { return v; };
}(i);
}
})();
// DO NOT MODIFY BELOW CODE
console.log(x * 2 === fns[x * 2]());
// console must show true
添加回答
舉報