js循环输出表格_JS 函数的执行时机

诡异的 666

如果有下面这段代码,你觉得应该输出什么?

let 

感觉上应该输出 0,1,2,3,4,5

但它实际的输出却是 666666!

setTimeout 代表忙完手头的事之后,马上执行 xxx,关键在于手头的事,是否改变了 i

因为循环先执行完,此时 i = 6,然后再执行 setTimeout,所以就会输出 666666

有私情的 let 和 for

那如何才能输出 0,1,2,3,4,5 呢?

JS 给出的答案是把 let 写在 for 里面

for

因为 JS 在 for 和 let 一起用的时候会添加操作,每次循环都会把 i 复制一份,留在这个空间

所以最后输出的就是留在这个空间的 i,也就是 0,1,2,3,4,5 了

被遗弃的立即执行函数

那还有没有别的办法输出 0,1,2,3,4,5 呢?

让我们试试 let 出现后,被遗弃的立即执行函数吧

let 

每次循环定义一个立即执行函数,并将 i 作为参数传给这个函数,那输出的值就不会随着 i 的变化而变化了,因此输出的结果自然就是 0,1,2,3,4,5 咯

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值