当获得以下代码的输出时,为什么 i 的值显示为 undefined

why value of i is showing undefined when output of the below code is obtained

let i = 0;

const g = (i, callback) => {
  if (i < 100) {
    callback(i)
    i++;
    g(i, callback)
  } else return
}

const k = (i) => {
  setTimeout((i) => {
    console.log('hi' + i);
  }, i * 1000);
}
g(i, k);

这段代码使用callback以1秒的间隔打印100次由i值连接的hi。我无法确定哪里出了问题。如果有人能帮助我,我将非常感激。

传递给 setTimeout 的函数中的 i 隐藏了 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);