博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
javascript异步执行函数导致的变量变化问题解决思路
阅读量:6691 次
发布时间:2019-06-25

本文共 570 字,大约阅读时间需要 1 分钟。

for(var i=0;i<3;i++){     setTimeout(function(){          console.log(i)    },0);} 控制台输出: 3 3 3

 这是因为执行方法的时候for循环已经执行完成每次执行的时候取得都是3 而不是1-2-3这时我们可以使用立即执行函数为每一次循环创建一个变量副本来供定时器调用解决这个问题

 

for (var i = 0; i < 3; i++) {            setTimeout(           (function () {               var _i = i;               return function () {                   console.log(_i)               };           })(),          0);        } 控制台输出: 1 2 3

上面的代码通过执行一个匿名函数来存储执行时的i 的变量_i 并返回一个使用_i变量的输出函数这个匿名函数会形成自己的闭包  执行时输出函数会使用匿名函数闭包中存储的_i 从而解决了变量i变化的问题

 

 

  

转载于:https://www.cnblogs.com/ab12/p/5489184.html

你可能感兴趣的文章
博客开张
查看>>
jquery.Callbacks的实现
查看>>
同一环境下新建Standby RAC库
查看>>
随手笔记NO.4
查看>>
未来监护人:FCC专员正在努力推迟网络中立投票
查看>>
LVS负载均衡群集(LVS-NAT)
查看>>
【Zabbix】如何搭建memcached?并使用Zabbix监控memcached?
查看>>
完爆 Best Fit,看阿里如何优化 Sigma 在线调度策略节约亿级成本
查看>>
spring事务
查看>>
NoSQL最新现状和趋势:云NoSQL数据库将成重要增长引擎
查看>>
python系统监控--转载
查看>>
2019年我国云计算行业存在的问题和发展趋势
查看>>
DXF图纸打开后怎么改变保存其格式为DWG?
查看>>
zabbix 监控 介绍
查看>>
SVN使用
查看>>
针对代码类测试的要点总结
查看>>
oracle 10g 启动 停止服务 批处理
查看>>
Docker部署私有仓库
查看>>
SQL Mirror配置手册
查看>>
linux bash bc awk 浮点 计算 比较
查看>>