【发布时间】:2026-02-17 19:55:02
【问题描述】:
我有以下代码:
window.setInterval((array => {
console.log(array[0]++);
console.log(array[1]++);
})([0, 0]), 500);
我希望上面的代码每次运行(500 毫秒)都会产生 0 和 0。然而,事实并非如此。它只跑了一次。当我尝试时:
window.setInterval((array => () => {
console.log(array[0]++);
console.log(array[1]++);
})([0, 0]), 500);
成功了。我认为第一个仍然会每 500 毫秒打印一次 0 和 0,因为带有参数 array 的 IIFE 每次运行总是会被赋予值 [0, 0](但是,情况并非如此,它运行只有一次!)。然后,第二个代码以某种方式允许array“记住”其先前的值并在每次运行时更新其值。有人可以向我解释一下吗?
【问题讨论】:
标签: javascript arrow-functions iife