for (var i = 0; i < 3; i++) {   setTimeout(() => console.log(i), 1); } for (let i = 0; i < 3; i++) {   setTimeout(() => console.log(i), 1); } 上面代码的输出结果是什么-笔试面试资料

这是qklbishe.com第9884 篇笔试面试资料
提供答案分析,通过本文《for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
上面代码的输出结果是什么-笔试面试资料》可以理解其中的代码原理,这是一篇很好的求职学习资料
本站提供程序员计算机面试经验学习,笔试经验,包括字节跳动/头条,腾讯,阿里,美团,滴滴出行,网易,百度,京东,小米,华为,微软等互联网大厂真题学习背诵。

答案:
for (var i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}

for (let i = 0; i < 3; i++) {
  setTimeout(() => console.log(i), 1);
}
上面代码的输出结果是什么

for (var i = 0; i &lt; 3; i++) {    setTimeout(() =&gt; console.log(i), 1);  }    for (let i = 0; i &lt; 3; i++) {    setTimeout(() =&gt; console.log(i), 1);  }  上面代码的输出结果是什么 区块链毕设学生219787648号
setTimeout是异步执行的,1000毫秒后向任务队列里添加一个任务,只有主线上的全部执行完才会执行任务队列里的任务,所以当主线程for循环执行完之后 i 的值为3,这个时候再去任务队列中执行任务,i全部为5;

每次for循环的时候setTimeout都会执行,但是里面的function则不会执行被放入任务队列,因此放了3次;for循环的3次执行完之后不到1000毫秒;

1000毫秒后全部执行任务队列中的函数,所以就是输出3个3啦

假如把var换成let,那么输出结果为0,1,2,;

因为let  i  的是区块变量,每个i只能存活到大括号结束,并不会把后面的for循环的  i  值赋给前面的setTimeout中的i;而var i  则是局部变量,这个 i 的生命周期不受for循环的大括号限制;

今天 08:49:18 回复(0)

文章部分来自互联网,侵权联系删除
www.qklbishe.com

区块链毕设网(www.qklbishe.com)全网最靠谱的原创区块链毕设代做网站
部分资料来自网络,侵权联系删除!
资源收费仅为搬运整理打赏费用,用户自愿支付 !
qklbishe.com区块链毕设代做网专注|以太坊fabric-计算机|java|毕业设计|代做平台 » for (var i = 0; i < 3; i++) {   setTimeout(() => console.log(i), 1); } for (let i = 0; i < 3; i++) {   setTimeout(() => console.log(i), 1); } 上面代码的输出结果是什么-笔试面试资料

提供最优质的资源集合

立即查看 了解详情