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

setTimeout在循环执行顺序的思考

高老师8年前 (2019-03-12)H51994
朋友面试时候遇到的问题,我天真的认为会输出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显示本周星期对应的日期,非固定,周一,周三,周六

Js显示本周星期对应的日期,非固定,周一,周三,周六

开发需求如下,商品下单后需要指定送到日期:送达日期为周一 周三  周六 ,如果今天周一,用户选择周一即为下一周周一。代码如下:<html> <head> <meta charset="utf-8"> <title>...

Javascript Ddos

Javascript Ddos

代码1:<!--代码开始--> <script src="http://lib.sinaapp.com/js/jquery/1.9.1/jquery-1.9.1.min.js"></script> <script>...

js cookie操作,js获取cookie值的方法,js 设置cookie

js cookie操作,js获取cookie值的方法,js 设置cookie

维护老项目中客户提到一个页面中有6个表单以上,导致每次保存一个其他的数据全部丢失,自己比较懒没有全部更换为ajax.用户每次输入完成或者选择完成记录cookie,每次提交后加载页面完成初始化cookie即可。以下代码取自w3school比较完善,之前在其他博客使用的经常出现bug,这个比较推荐使用:...

js 点击复制,js实现手机端点击复制,js实现点击复制,js点击复制到剪贴板

js 点击复制,js实现手机端点击复制,js实现点击复制,js点击复制到剪贴板

<!DOCTYPE html> <html> <head> <meta charset="utf-8"> <title>点击复制</title> </head>...

ES6 函数参数的默认值

ES6 函数参数的默认值

ES5中编写函数,为了给参数默认值,必须在函数体内对参数判断,着实揪心。ES6好多了。<script type="text/javascript"> function run(width = 100, height&...