for循环console输出结果的问题
2024-09-06 02:36:08
我想定时打印出一串数字,写好了如下代码
for (var i = 0; i < 5; i++) {
setTimeout(function () {
console.log(i);
}, 5);
}
打印出来的结果是5个5。为什么不是0,1,2,3,4呢?主要是因为setTineout的i是对外层i的引用,并非i的值,运行5次的结果都指向最终的i值(5)。可以通过将i值保存在局部变量来解决:
for (var i = 0; i < 5; i++) {
(function (idx) {
setTimeout(function () {
console.log(idx);
}, 5);
})(i);
}
这样就可以打印出0,1,2,3,4。
最新文章
- JDBC 内部资料 请勿转载 谢谢合作
- Events with Dojo(翻译)
- 【POJ-2482】Stars in your window 线段树 + 扫描线
- java微信接口之四—上传素材
- MongoDB 存储引擎Wiredtiger原理剖析
- TexBox的属性
- SecureCRT最佳配色方法+直接修改默认配置方法 - imsoft.cnblogs
- ios开发--清理缓存
- 一段画对角线的canvas代码,之前没有写过canvas代码,现在记录下来
- Oracle 修改密码 解锁
- SQL存储过程动态查询数据区间
- java异常处理机制(try-catch-finally)
- 实训任务01:安装Hadoop
- Eclipse配置注释模板详细介绍
- 递归打印lua中的table
- 【Tars】腾讯微服务框架Tars介绍
- 分享chrome清空缓存开发小技巧
- 柯朗微积分与数学分析习题选解(1.1 节 e)
- SpringMVC 多视图解析器配置以及问题
- [OSG]OSG的相关扩展
热门文章
- p1036 选数(不详细勿看,递归)
- java中list或数组中随机子集工具类
- c++_核桃的数量
- [MVC]在练习MusicStore过程中问题实录
- java环境配置——配置tomcat用户
- BNUOJ 2345 Muddy Fields
- [luoguP2736] “破锣摇滚”乐队 Raucous Rockers(DP)
- 斗地主(codevs 4610)
- Codevs 1497 取余运算== 洛谷P 1226
- vim—基本命令1