💻 JS For循环中嵌套`setTimeout()`方法的理解 🤔
在JavaScript开发中,我们经常需要处理一些定时任务或异步操作。当使用`for`循环与`setTimeout()`结合时,你会发现结果可能和预期不同!🤔
例如:
```javascript
for (let i = 0; i < 3; i++) {
setTimeout(() => {
console.log(i);
}, 1000);
}
```
输出结果会是 `3, 3, 3`,而不是 `0, 1, 2`。这是因为`setTimeout()`是异步的,循环会在`setTimeout`执行前完成,导致最终打印时变量`i`的值已经是循环结束后的值(即`3`)。⏰
那么如何解决呢?可以使用立即执行函数表达式(IIFE)包裹变量,为每次循环创建独立的作用域:
```javascript
for (let i = 0; i < 3; i++) {
(function(j) {
setTimeout(() => {
console.log(j);
}, 1000);
})(i);
}
```
这样就能得到正确的输出 `0, 1, 2`!💡
掌握这个技巧后,你就可以更灵活地处理复杂的异步逻辑了!🚀
免责声明:本答案或内容为用户上传,不代表本网观点。其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。 如遇侵权请及时联系本站删除。