Первый параметр, переданный setInterval
, должен быть функцией. В первом фрагменте вы немедленно вызываете функцию и возвращаете undefined
:
window.setInterval((array => {
console.log(array[0]++);
console.log(array[1]++);
})([0, 0]), 500);
эквивалентно
window.setInterval(() => {
// do something, return undefined
})(), 500);
и после оценки IIFE:
window.setInterval(undefined, 500);
Итак, вам нужно что-то вроде второго фрагмента, в котором IIFE также возвращает функцию:
window.setInterval((array => () => {
console.log(array[0]++);
console.log(array[1]++);
})([0, 0]), 500);
Хотя вы можете определить array
во внешнем IIFE, чтобы сделать код немного более понятным:
window.setInterval(
(() => {
const array = [0, 0];
return () => {
console.log(array[0]++);
console.log(array[1]++);
};
})(),
500
);