js立即执行函数_JS函数的执行机制

本文主要说一说js函数的执行机制,先来看看下面这一段代码:

let 

这段代码的打印结果是6个6而不是0,1,2,3,4,5。

先来解释为什么是6:

原因是setTimeout的调用时机是在for循环结束之后执行的(其实是和js的异步执行有关,setTimeout放在队列里,之后我会详细解释一篇js的单线程和他的异步机制),当for循环执行结束之后,此时的i已经变成了6(为什么不是5?原因是i = 5的时候会再进行一次i++,此时i = 6;但是这个i没有进入循环,而i的值此时确实已经变成了6),在setTimeout执行的时候将i的值打印出来。

为什么是6个?

原因是for循环执行了 0,1,2,3,4,5六次,里面的setTimeout被定义了6个(可以想象成设定了6个闹钟),所以会打印出6个。

那么如何利用上述方法打印出0,1,2,3,4,5

//方法一

文章参考连接:

文章参考连接:

调用栈:为什么JavaScript代码会出现栈溢出 | 浏览器工作原理与实践​blog.poetries.top
218e9bda127f18e04bbe7a2b8b9fafa7.png
函数​wangdoc.com

真正的理解let:

方应杭:我用了两个月的时间才理解 let​zhuanlan.zhihu.com
3e6f3d8a7bfda26b626979c8c28a4af8.png
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值