当前位置:首页 > H5 > 正文内容

setTimeout在循环执行顺序的思考

高老师7年前 (2019-03-12)H51954
朋友面试时候遇到的问题,我天真的认为会输出0,1,2,但是实际一直只输出2,2,2。通过了解才执行Js自身是单线程的环境,for循环本身是同步代码,setTimeout是异步代码。单线程的语言不能同时做2件事情,必须做出选择。于是Js引擎决定了当我执行完成同步的代码,再去执行异步的代码。当执行异步的代码时候i变量的值已经是2了。

说白了就是先执行同步代码,再执行异步代码。

<script type="text/javascript">
for(var i= 0;i<3;i++)
{
setTimeout(function(){
console.log(i);
},10000)
}
</script>

扫描二维码推送至手机访问。

版权声明:本文由高久峰个人博客发布,如需转载请注明出处。

本文链接:https://blog.20230611.cn/post/271.html

分享给朋友:

“setTimeout在循环执行顺序的思考” 的相关文章

百度地图,腾讯地图生成导航链接

百度地图,腾讯地图生成导航链接

https://3gimg.qq.com/lightmap/v1/marker/index.html?marker=coord:37.6767600000,112.7297800000&key=TKUBZ-D24AF-GJ4JY-JDVM2-IBYKK-KEBCU&referer=p...

 js图片旋转插件jqueryrotate

js图片旋转插件jqueryrotate

jQuery 插件——jqueryrotate,它可以实现旋转效果。jqueryrotate 支持所有主流浏览器,包括 IE6。如果提示方法不存在,可能是你的Jquery版本过低或者过高。基本语法:$('#img').rotate(90);//旋转90度其他的参数:参数类型说明默认值...

微信禁用右上角的分享按钮,以及隐藏分享的子按钮等菜单项

微信禁用右上角的分享按钮,以及隐藏分享的子按钮等菜单项

和腾讯合作的项目活动中腾讯要求我们必须隐藏朋友圈分享功能,一直以为没有官方Api,百般查找才在文档中找到,可能是自己不太细心。微信官方文档在jsjdk的"界面操作"中有详细说明:关闭当前网页窗口接口wx.closeWindow();批量隐藏功能按钮接口wx.hideMenuIte...

 chrome修改js函数,chrome修改js代码,网页上修改js代码

chrome修改js函数,chrome修改js代码,网页上修改js代码

(1).如果js函数代码在html中写的,例如下面的代码:<html> <head> <meta charset="utf-8"> </head> <body> <a onclick="...

js Promise对象,js then catch

js Promise对象,js then catch

具体文章解释请看廖雪峰老师的文章,这里仅仅记录笔记。国内飞机票点击访问首次接触可能一脸懵逼,下面的代码手把手敲一遍,100%懂。(1).基础demo//创建承诺 let p1 = new Promise(function (resolve, ...

js上传文件转base64

js上传文件转base64

js选择文件进行上传转换为base64的方法:  let reader = new FileReader();   reader.readAsDataURL(file[0])   console.lo...