浅析javascript异步执行函数导致的变量变化问题解决思路


Posted in Javascript onMay 13, 2016

浅析javascript异步执行函数导致的变量变化问题解决思路

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

以上这篇浅析javascript异步执行函数导致的变量变化问题解决思路就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javaScript - 如何引入js代码
Mar 09 Javascript
JavaScript中“+=”的应用
Feb 02 Javascript
asp.net下利用js实现返回上一页的实现方法小集
Nov 24 Javascript
extjs 的权限问题 要求控制的对象是 菜单,按钮,URL
Mar 09 Javascript
javascript 函数声明与函数表达式的区别介绍
Oct 05 Javascript
javascript使用for循环批量注册的事件不能正确获取索引值的解决方法
Dec 20 Javascript
ES6数组的扩展详解
Apr 25 Javascript
Angular4学习之Angular CLI的安装与使用教程
Jan 04 Javascript
vue监听用户输入和点击功能
Sep 27 Javascript
jQuery操作动画完整实例分析
Jan 10 jQuery
Webpack的Loader和Plugin的区别
Nov 09 Javascript
vue组件中节流函数的失效的原因和解决方法
Dec 02 Vue.js
Javascript基础之数组的使用
May 13 #Javascript
JS判断图片是否加载完成方法汇总(最新版)
May 13 #Javascript
BootStrap扔进Django里的方法详解
May 13 #Javascript
JavaScript重载函数实例剖析
May 13 #Javascript
JS加载iFrame出现空白问题的解决办法
May 13 #Javascript
基于JS判断iframe是否加载成功的方法(多种浏览器)
May 13 #Javascript
JS iFrame加载慢怎么解决
May 13 #Javascript
You might like
php生成shtml类用法实例
2014/12/09 PHP
PHP结合Ueditor并修改图片上传路径
2016/10/16 PHP
PHP实现计算器小功能
2020/08/28 PHP
javascript 控制 html元素 显示/隐藏实现代码
2009/09/01 Javascript
jQuery 行背景颜色的交替显示(隔行变色)实现代码
2009/12/13 Javascript
jquery实现的超出屏幕时把固定层变为定位层的代码
2010/02/23 Javascript
基于jquery点击自以外任意处,关闭自身的代码
2012/02/10 Javascript
jqTransform form表单美化插件使用方法
2012/07/05 Javascript
CSS鼠标响应事件经过、移动、点击示例介绍
2013/09/04 Javascript
jquery ajax传递中文参数乱码问题及解决方法说明
2014/02/07 Javascript
jquery实现带缩略图的全屏图片画廊效果实例
2015/06/25 Javascript
完美实现bootstrap分页查询
2015/12/09 Javascript
关于JavaScript数组你所不知道的3件事
2016/08/24 Javascript
Angular.js中$apply()和$digest()的深入理解
2016/10/13 Javascript
实现一个简单的vue无限加载指令方法
2017/01/10 Javascript
setTimeout学习小结
2017/02/08 Javascript
requirejs按需加载angularjs文件实例
2017/06/08 Javascript
荐书|您有一份JavaScript书单待签收
2017/07/21 Javascript
jquery中ajax请求后台数据成功后既不执行success也不执行error的完美解决方法
2017/12/24 jQuery
vue vue-Router默认hash模式修改为history需要做的修改详解
2018/09/13 Javascript
vue移动端城市三级联动组件使用详解
2019/07/26 Javascript
VUE 动态组件的应用案例分析
2019/12/02 Javascript
javascript实现一款好看的秒表计时器
2020/09/05 Javascript
[01:25:09]2014 DOTA2国际邀请赛中国区预选赛 5 23 CIS VS DT第二场
2014/05/24 DOTA
[01:05]DOTA2完美大师赛趣味视频之选手教你打职业
2017/11/23 DOTA
跟老齐学Python之重回函数
2014/10/10 Python
进一步探究Python的装饰器的运用
2015/05/05 Python
怎样使用Python脚本日志功能
2016/08/14 Python
python 返回列表中某个值的索引方法
2018/11/07 Python
Python 如何在字符串中插入变量
2020/08/01 Python
Monnier Freres中文官网:法国领先的奢侈品配饰在线零售商
2017/11/01 全球购物
Maisons du Monde德国:法国家具和装饰的市场领导者
2019/07/26 全球购物
经验交流材料格式
2014/12/30 职场文书
个人先进事迹总结
2015/02/26 职场文书
MySQL 时间类型的选择
2021/06/05 MySQL
Python保存并浏览用户的历史记录
2022/04/29 Python