[JavaScript]js单线程,闭包,以及如何处理闭包带来的一些影响

本文探讨了JavaScript的单线程特性,解释了setTimeout的工作原理,并通过示例说明了如何处理由闭包引起的副作用。在改用let关键字后,解决了变量作用域问题,实现了预期的输出效果。
摘要由CSDN通过智能技术生成

在这里插入图片描述

时间 输出
第0秒 3
第1秒 3
第2秒 3

原因:js是单线程(因为他是面向web的语言,比如防止用户同时触发删除和添加,如果是多线程会导致出现bug),setTimeout中的()=>{}会被加入任务队列,js会先执行执行栈里的内容(对于上面的函数来说就是三次循环完成setTimeout),再执行任务队列(setTimeout中的函数)。

将var改为let,则输出结果为0 1 2秒分别输出0 1 2

for(let i=0;i<3;i++){
   
    setTimeout(
        ()
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值