当获得以下代码的输出时,为什么 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);
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);