浅析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 相关文章推荐
给网站上的广告“加速”显示的方法
Apr 08 Javascript
jQuery的选择器中的通配符[id^='code']或[name^='code']及jquery选择器总结
Dec 24 Javascript
jQuery progressbar通过Ajax请求实现后台进度实时功能
Oct 11 Javascript
Jquery Easyui对话框组件Dialog使用详解(14)
Dec 19 Javascript
利用angularjs1.4制作的简易滑动门效果
Feb 28 Javascript
解决ie img标签内存泄漏的问题
Oct 13 Javascript
五步轻松实现zTree的使用
Nov 01 Javascript
angular实现页面打印局部功能的思考与方法
Apr 13 Javascript
详解mpvue中使用vant时需要注意的onChange事件的坑
May 16 Javascript
解决vue打包后刷新页面报错:Unexpected token
Aug 27 Javascript
webpack 最佳配置指北(推荐)
Jan 07 Javascript
Vue父子之间值传递的实例教程
Jul 02 Javascript
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
PHP4实际应用经验篇(8)
2006/10/09 PHP
PHP新手用的Insert和Update语句构造类
2012/03/31 PHP
php读取二进制流(C语言结构体struct数据文件)的深入解析
2013/06/13 PHP
对于ThinkPHP框架早期版本的一个SQL注入漏洞详细分析
2014/07/04 PHP
PHP中empty和isset对于参数结构的判断及empty()和isset()的区别
2015/11/15 PHP
php中__toString()方法用法示例
2016/12/07 PHP
php JWT在web端中的使用方法教程
2018/09/06 PHP
有关js的变量作用域和this指针的讨论
2010/12/16 Javascript
js实现鼠标经过时图片滚动停止的方法
2015/02/16 Javascript
JS+CSS实现仿msn风格选项卡效果代码
2015/10/22 Javascript
jQuery鼠标事件总结
2016/10/13 Javascript
canvas 画布在主流浏览器中的尺寸限制详细介绍
2016/12/15 Javascript
JavaScript实现经典排序算法之选择排序
2016/12/28 Javascript
jQuery实现鼠标经过显示动画边框特效
2017/03/24 jQuery
js实现一个简单的数字时钟效果
2017/03/29 Javascript
angular2中router路由跳转navigate的使用与刷新页面问题详解
2017/05/07 Javascript
Angularjs单选框相关的示例代码
2017/08/17 Javascript
vue系列之动态路由详解【原创】
2017/09/10 Javascript
js实现数组内数据的上移和下移的实例
2017/11/14 Javascript
JS常用的几种数组遍历方式以及性能分析对比实例详解
2018/04/11 Javascript
element-ui中的select下拉列表设置默认值方法
2018/08/24 Javascript
JS学习笔记之闭包小案例分析
2019/05/29 Javascript
Vuex的各个模块封装的实现
2020/06/05 Javascript
Vue 组件复用多次自定义参数操作
2020/07/27 Javascript
python中defaultdict的用法详解
2017/06/07 Python
Python调用系统底层API播放wav文件的方法
2017/08/11 Python
python 文件转成16进制数组的实例
2018/07/09 Python
pycharm安装和首次使用教程
2018/08/27 Python
Django Admin后台添加数据库视图过程解析
2020/04/01 Python
pyinstaller将含有多个py文件的python程序做成exe
2020/04/29 Python
Python中如何引入第三方模块
2020/05/27 Python
Python函数递归调用实现原理实例解析
2020/08/11 Python
同事打架检讨书
2014/02/04 职场文书
小组合作学习反思
2014/02/18 职场文书
小学毕业感言300字
2014/02/19 职场文书
在 Python 中利用 Pool 进行多线程
2022/04/24 Python