博客
关于我
算法系列1--js数组排序
阅读量:346 次
发布时间:2019-03-03

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

在原来的代码中,使用var声明的i变量在setTimeout函数内部会受到外部变量的引用问题影响,导致所有的setTimeout回调都使用了最后一次循环中的i值。以下是优化后的代码,能够正确输出0到9:

解决方案一:

for (var i = 0; i < 10; i++) {    (function(j) {        setTimeout(() => {            console.log(j);        }, 1000);    })(i);}

解决方案二:

for (let i = 0; i < 10; i++) {    setTimeout(() => {        console.log(i);    }, 1000);}

解决方案三:

for (var i = 0; i < 10; i++) {    setTimeout((i) => {        console.log(i);    }, 1000, i);}

解决方案四:

for (var i = 0; i < 10; i++) {    ((j) => {        setTimeout(() => {            console.log(j);        }, 1000);    })(i);}

这些方法都通过不同的方式确保setTimeout回调中使用的i值是当前循环中的值,而不是最后一次循环中的值,从而能够正确输出0到9。

转载地址:http://opyq.baihongyu.com/

你可能感兴趣的文章
PresentViewController切换界面
查看>>
PyTorch之torch.utils.data.DataLoader解读
查看>>
PyTorch之DataLoader杂谈
查看>>
presto、druid、sparkSQL、kylin的对比分析
查看>>
Presto分布式大数据查询引擎
查看>>
Presto架构及原理
查看>>
Presto(一)集群部署
查看>>
Presto(二)开启安全认证
查看>>
Pricing procedure Steps and Details in SAP MM (from SCN)
查看>>
Prim 算法在不同权重范围内的性能分析及其实现
查看>>
Primace 5.0软件与KEIL单片机软件联合在线仿真步骤
查看>>
Prime Distance
查看>>
Prim求MST最小生成树
查看>>
Prim算法与Kruskal算法在均匀分布权重图中的性能比较
查看>>
Prim算法在加权连通图中的简单实现
查看>>
Prim算法详解及C代码示例
查看>>
pytorch中让数组显示更多的数字 torch.set_printoptions参数详解 numpy也是这个函数
查看>>
pringBoot Controller接收参数的几种常用方式
查看>>
printf()函数
查看>>
PyTorch中的自定义权重初始化
查看>>