在forEach内部操作数组会产生不一致的输出



我有一个forEach((函数,每次迭代都会将数组增加一。

问题是,每次我将number变量打印到浏览器控制台时,它都会显示它的最后状态,而不是当前状态。这是矛盾还是我做错了什么?

控制台输出

let array = 
[
{
"id":1,
},
{
"id":2,
},
{
"id":3,
}
]
let number = [0]
array.forEach(() => {
number[0] += 1
console.log(number)
})

您在末尾看到的是数组引用,以及它的最后一个状态(后forEach(。运行后,它实际上包含一个值为3的变量。

尝试记录而不是引用;状态";值的。

let array = 
[
{
"id":1,
},
{
"id":2,
},
{
"id":3,
}
]
let number = [0]
array.forEach(() => {
number[0] += 1
console.log(number[0]) // <--- this is the diff
})

最新更新