javascript - 访问回调参数到内部回调

标签 javascript

我正在尝试理解这段代码。

let a = [1, 2, 3, 4, 5];

a.forEach(i => {
  setTimeout(i => {
    console.log(i);
  }, 1000);
});

为什么它给出这样的输出:

5 times: undefined

我知道 javascript 异步执行代码并调度 setTimeout 函数,当迭代停止时 i 的最后一个值未定义但为什么未定义。
javascript 中我们不能访问外部回调参数的范围吗?

最佳答案

setTimeout中的i去掉就可以了

let a = [1,2,3,4,5];
a.forEach((i) => {
    setTimeout(() => {
        console.log(i);
    }, 1000);
});

关于javascript - 访问回调参数到内部回调,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56080487/

相关文章:

javascript - 函数返回 [Object Object] 不是值

javascript - 查找函数是否返回 Promise 的方法

JavaScript 事件监听器测验

javascript - Gulp AssertionError - Sass 依赖项

php - 我使用服务器发送事件(和 Javascript/PHP)的连接总是立即断开

javascript - 如何在 Node.js 中使用代理

javascript - 重新加载 JQuery 和 CSS

javascript - 如何选择注入(inject)的 HTML 的 li 并使其隐藏

javascript - Ajax - Json 与文本性能

javascript - 在turn.js中设置第一页是双页而不是单页?