浅析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 动态添加表格行 使用模板、标记
Oct 24 Javascript
javascript getElementsByClassName函数
Apr 01 Javascript
重载toString实现JS HashMap分析
Mar 13 Javascript
js中更短的 Array 类型转换
Oct 30 Javascript
仿百度输入框智能提示的js代码
Aug 22 Javascript
利用JS解决ie6不支持max-width,max-height问题的方法
Jan 02 Javascript
sliderToggle在写jquery的计时器setTimeouter中不生效
May 26 Javascript
Vue.js之slot深度复制详解
Mar 10 Javascript
vue中filters 传入两个参数 / 使用两个filters的实现方法
Jul 15 Javascript
微信小程序 确认框的实现(附代码)
Jul 23 Javascript
tracking.js实现前端人脸识别功能
Apr 16 Javascript
一文帮你理解PReact10.5.13源码
Apr 03 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
目录,文件操作详谈―PHP
2006/11/25 PHP
php设置编码格式的方法
2013/03/05 PHP
php中fgetcsv()函数用法实例
2014/11/28 PHP
PHP cURL初始化和执行方法入门级代码
2015/05/28 PHP
使用php实现从身份证中提取生日
2016/05/09 PHP
PHP设计模式(三)建造者模式Builder实例详解【创建型】
2020/05/02 PHP
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
Nodejs中session的简单使用及通过session实现身份验证的方法
2016/02/04 NodeJs
使用jquery提交form表单并自定义action的实现代码
2016/05/25 Javascript
Javascript之面向对象--封装
2016/12/02 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
JS排序之快速排序详解
2017/04/08 Javascript
Vue单页面应用保证F5强刷不清空数据的解决方案
2018/01/31 Javascript
详解webpack打包第三方类库的正确姿势
2018/10/20 Javascript
vuex存储复杂参数(如对象数组等)刷新数据丢失的解决方法
2019/11/05 Javascript
JavaScript自定义超时API代码实例
2020/04/30 Javascript
如何在vue中使用百度地图添加自定义覆盖物(水波纹)
2020/11/03 Javascript
[01:26]DOTA2荣耀之路2:iG,China
2018/05/24 DOTA
[43:47]完美世界DOTA2联赛PWL S3 LBZS vs Phoenix 第一场 12.09
2020/12/11 DOTA
用Python创建声明性迷你语言的教程
2015/04/13 Python
python绘制条形图方法代码详解
2017/12/19 Python
Python连接Mssql基础教程之Python库pymssql
2018/09/16 Python
Python实现的列表排序、反转操作示例
2019/03/13 Python
python的time模块和datetime模块实例解析
2019/11/29 Python
Python通过4种方式实现进程数据通信
2020/03/12 Python
美国新蛋IT数码商城:Newegg.com
2016/07/21 全球购物
美国电子产品折扣网站:Daily Steals
2017/05/20 全球购物
俄罗斯茶和咖啡网上商店:Tea.ru
2021/01/26 全球购物
体育专业个人的求职信范文
2013/09/21 职场文书
高中数学教师求职信
2013/10/30 职场文书
酒后驾车标语
2014/06/30 职场文书
环境建议书
2015/02/04 职场文书
2015年感恩父亲节演讲稿
2015/03/19 职场文书
公司辞职信模板
2015/05/13 职场文书
详解Python牛顿插值法
2021/05/11 Python
redis的list数据类型相关命令介绍及使用
2022/01/18 Redis