加入收藏 | 设为首页365在线体育
 www.365808.com
最容易理解闭包的描述。
发布时间:2019-04-28 点击:
有些东西混合,定时器,闭包的循环。
如图1所示,在基本循环中,顺序发出变量值。
(Vari = 1; ii ++){如果是控制台
记录(i); //不用说结果}
2,如果for循环中有一个定时器,则代码如下。
(Vari = 1; ii ++){setTimeout的情况(function(){console)
Log(i);第一个意图是在3秒后生成1,2,3。
但是,它将在3秒后的3 4秒内结束。
原因是定时器的异步执行。for循环的执行速度非常快。当它在函数体中实际执行时,结果是未知的,因为我已经是4。
3,如果想要正确的结果,必须输入结束以保存变量i不被破坏。
(Vari = 1; ii ++){(function(a){setTimeout(function(){console))
日志(a)中;以及操作所述可变//一个,i是不相干},3000);以这种方式})(i)至进入闭合,i被存储着的变量,函数的主体在3秒后执行,输出如下。一二三
(Vari = 1; ii ++){setTimeout(fn(i),3000);}functionfn(a){returnfunction(){console}
我们将生成一个不包括4(3)的数字。换句话说,3个完成1,结束3和结束2。
将计时器时间设置为(vari = 1; ii ++){(function(a){setTimeout(function(){console))。
Log(a);},to * 3000);})(i)}实际上,for循环非常快。上面的代码类似于同时启动三个定时器,只需要确认时间是不同的。
这里,由于同时激活,时间分别为3秒,6秒和9秒,但执行时间不同,每个时间间隔为3秒。
我成功实现了目标。
如果以后有补充,它将继续添加。