为了账号安全,请及时绑定邮箱和手机立即绑定

立即执行函数为什么能跳过事件队列立即执行

立即执行函数为什么能跳过事件队列立即执行

慕仙森 2019-03-10 10:18:23
小白问题,求给位赏脸for (var i = 0; i < 5; i++) {setTimeout(function() { console.log(i); }, i * 1000 );}知道输出5个5 知道这快是事件队列和作用域引起的,但是当使用闭包时结果不同;for (var i = 0; i < 5; i++) {(function(x) {     setTimeout(function() { console.log(x); }, x * 1000 );})(i);}一次输出0, 1,2,3,4 ;可是 里面这和立即执行函数的作用是什么?是直接改变了事件队列吗?求大神,大佬指点~~
查看完整描述

2 回答

?
米琪卡哇伊

TA贡献1998条经验 获得超6个赞

5个5是循环中每个迭代在运行时都会给自己捕获一个i 后面那段代码则是通过申声明并立即执行函数来创建一个函数来创建作用域的 具体看看我的这篇文章 闭包

查看完整回答
反对 回复 2019-03-10
  • 2 回答
  • 0 关注
  • 557 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信