js块循环

/* var funcs = [];
for(var i=0;i<10;i++){
funcs.push(function(){console.log(i);});
}
funcs.forEach(function(func){
func();
});
// 输出数值 "10" 十次,原因是i是共享variable */

// 解决方法1:立即调用函数表达式
/* var funcs = [];
for (var i=0;i<10;i++){
funcs.push(function(value){
return function(){
console.log(value);
}
}(i));
}
funcs.forEach(function(func){
func();
}); */

// 解决方法2:es6块级作用 let
var funcs = [];
for(let i=0;i<10;i++){
funcs.push(function(){
console.log(i);
});
}
funcs.forEach(function (func) {
func();

});

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • 单例模式 适用场景:可能会在场景中使用到对象,但只有一个实例,加载时并不主动创建,需要时才创建 最常见的单例模式,...
    Obeing阅读 6,423评论 1 10
  • 工厂模式类似于现实生活中的工厂可以产生大量相似的商品,去做同样的事情,实现同样的效果;这时候需要使用工厂模式。简单...
    舟渔行舟阅读 12,385评论 2 17
  • 说明本次redis集群安装在rhel6.8 64位机器上,redis版本为3.2.8,redis的gem文件版本为...
    读或写阅读 15,418评论 3 9
  • 反思日志0526 每日必读:12条人生原则 1. 早起——黎明即起,醒后不睡回笼觉。暂定6点之前起床即为“早起”。...
    娟妹纸李娟阅读 1,898评论 0 1
  • 1、团队借力学习 个人体会 今天辛苦外地资深老师千里迢迢从北方过来,给我们团队传授多年的专业知识和事业经验,...
    葆婴USANA廖瑜阅读 1,261评论 0 0