不太懂这个闭包

不太懂这个闭包

http://img1.sycdn.imooc.com//climg/5d5fd9710001033704180347.jpg

 这种上面的1648和2005是什么意思呀 

 为什么是反回5个5呀,我以为是一个5


正在回答

登陆购买课程后可参与讨论,去登陆

3回答

同学你好, 定时器是异步任务,js语言规定,异步任务需要等待同步任务执行完成之后才可以执行。

每循环一次就会开启一个定时器, 但是这个定时器不会立刻执行, 等到for循环结束后,一共有五个定时器等待被执行, 所以最终打印了5个5

如果帮助到了你, 欢迎采纳!

祝学习愉快~~~

好帮手慕言 2019-08-24 17:41:40

同学你好,因为定时器是异步的,定时器执行之前,for循环就已经执行完了,所以在定时器里面打印i值时是5。

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 提问者 vuepz #1
    既然循环执行完了才进入定时器,为什么会有5个5,循环完了执行定时器不就是一个5吗?请老师详解下,这一块有点蒙
    2019-08-25 17:01:06
好帮手慕言 2019-08-24 11:03:27

同学你好,这个是循环里面有一个定时器,不是闭包哦,老师在视频中讲的是闭包,特点是函数里面嵌套函数

http://img1.sycdn.imooc.com//climg/5d60a8370001665c07480301.jpg

1、图中标红的数字是定时器的返回值,由于不知道同学是怎么操作的,数值相差很大,这边测试结果如下(同学知道是定时器的返回值就可以了):

http://img1.sycdn.imooc.com//climg/5d60a8a2000185ee05160303.jpg

2、因为i的值初始是0,条件是i<5,所以会循环5次,因此打印出来是5个5.

如果帮助到了你,欢迎采纳~祝学习愉快~

  • 提问者 vuepz #1
    那为什么第一次循环是i=0时,输出的i却是5呢?
    2019-08-24 11:08:25
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
2.组件化网页开发
  • 参与学习           人
  • 提交作业       1121    份
  • 解答问题       14456    个

本阶段在运用JS实现动态网页开发的基础上,带你深入理解企业开发核心思想,完成一个企业级网页的开发,体验前端工程师的成就感。

了解课程
请稍等 ...
意见反馈 帮助中心 APP下载
官方微信

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师