0
为什么此代码片段输出5(如预期由于范围链)?JavaScript中'实体'对象和函数对象之间的生命周期有什么区别?
let arr = []
var firstFunc;
for(var i = 0; i < 5; i++) {
var iterFunc = function() {
return function() {
return i
}
}
arr.push(iterFunc())
}
console.log(arr[0]())
但这输出{A:0}:
let arr = []
var firstFunc;
for(var i = 0; i < 5; i++) {
var iterFunc = function() {
return {
a: i
}
}
arr.push(iterFunc())
}
console.log(arr[0])
引擎盖下发生什么存储器分配逻辑?为什么'实体'对象与闭包相反,保持当前值?
真棒解释!它符合我的想法!谢谢! –