☆6☆小测验:以下代码输出的结果是什么?

今天来点好玩的~

一起猜猜以下几组代码输出的结果是什么?

第一组:

console.log(1);
setTimeout(function(){
  console.log(2);
},10);
setTimeout(function(){
  console.log(3);
},0); 
console.log(4);

答案1:1,4,2,3

第二组:

for (var i = 0; i < 3; i++) {
     setTimeout(function() {
         console.log(i);
     }, 0);
     console.log(i);
 }

答案2:0,1,2,3,3,3

解析:本案例涉及到执行事件队列和定时器的概念,还是很容易理解的~

//执行过程
var  i=0;
setTimeout(function() {
    console.log(i);
}, 0);
console.log(i); //0
i=1;
setTimeout(function() {
    console.log(i);
}, 0);
console.log(i);//1
i=2;
setTimeout(function() {
    console.log(i);
}, 0);
console.log(i);//2
i=3

function() {
   console.log(i);//3
}

function() {
   console.log(i);//3
}

function() {
   console.log(i);//3
}

这里再补充一下定时器的相关知识:

定时器模块

1、一次性定时器

开启

var timer=setTimeout(回调函数,间隔时间)

//当间隔时间到了,会执行一次回调函数;单位毫秒

清除

clearTimeout(timer)

2、周期性定时器

开启

var timer=setInterval(回调函数,间隔函数)

//每隔一段时间,调用一次回调函数

清除

clearInterval(timer)

3、立即执行定时器

开启var timer=setImmediate(回调函数)

清除clearImmediate(timer)

开启process.nextTick(回调函数)

注意:所有的定时器,回调函数都要放入事件队列执行。

4、案例:使用周期性定时器,每3秒钟打印一次'hello',3次以后清除定时器

		</script>
		<script>
			var count=0
			var timer=setImmediate(function(){
				console.log("hello")
				count++
				if(count===3){
					clearInterval(timer)
				}
			},3000)
		</script>

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

长安梦我

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值