i
внутри функции, переданной setTimeout
, затеняет ту, которую k
принимает в качестве аргумента. Таким образом, чтобы исправить фрагмент, вам просто нужно удалить аргумент обратного вызова:
let i = 0;
const g = (i, callback) => {
if (i < 100) {
callback(i)
i++;
g(i, callback)
} else return
}
const k = (i) => {
setTimeout(() => { // <------ I removed `i` here
console.log('hi' + i);
}, i * 1000);
}
g(i, k);