setTimeout 为0的作用

js是单线程,你得setTimeout函数虽然时间设置为0,但是也是一个异步,他会在任务池中排队等待js引擎空闲才执行.

js的执行是单线程的,都需要排队去执行的,循环在一瞬间就完成了,即使时间是0,也是在排队。除非你用闭包去解决这个问题,就可以一次输出你想要的了

 

跟js的执行机制有关,js是单线程的,同一时间只能做一件事,通过事件轮询实现异步的执行,直接调用函数变量之类同步执行会进入到执行栈中,按顺序执行,所有的异步执行,则会放入执行队列,在回调接到相应后,插入到执行栈中执行。
setTimeout是个异步执行的回调,在执行队列中,所以会等所有的for循环任务栈结束后再执行,设置的时间代表当回调执行时,等待多长时间后执行,而不是js解析器读到这段代码,等待多长时间执行,所以有时候还会感觉执行时间比给定的时间长。

返回值就像上面所说的是定时器编号,所以一般使用定时器,都会给予一个命名,方便以后清除定时器。

 

https://segmentfault.com/q/1010000010351840

 

转载于:https://www.cnblogs.com/yhl-0822/p/9835588.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值