考虑以下代码:
var functions = []
for(var i = 0; i < 3; i++) {
functions.push(function() {
console.log(i)
})
}
for(var i = 0; i < 3; i++) {
functions[i]()
}
//outputs:
// 1
// 2
// 3
functions.map(function(fn, i) {
fn()
})
//outputs:
// 3
// 3
// 3
为什么for循环和array.map之间的输出不同? 函数数组中的每个函数都应输出值3,这是我在Javascript中所期望的典型行为......