循环中加定时器 i的问题
来源:互联网 发布:易语言运行js脚本 编辑:程序博客网 时间:2024/05/13 10:35
for(var i=0;i<2;i++){ setTimeout(function(){ alert(i); },0);}
执行上面的代码,大家得到是弹出两次2;
可能大家心里在嘀咕了,我这个定时器不是0ms延迟么?应该弹0,1才对啊。
为什么会产生这样的结果呢?
因为JavaScript 是单线程执行的,也就是无法同时执行多段代码,当某一段代码正在执行的时候,所有后续的任务都必须等待,形成一个队列,一旦当前任务执行完毕,再从队列中取出下一个任务。这也常被称为 “阻塞式执行”。
如果代码中设定了一个 setTimeout,那么浏览器便会在合适的时间,将代码插入任务队列,如果这个时间设为 0,就代表立即插入队列,但不是立即执行,仍然要等待前面代码执行完毕。而在我们这个demo里for循环就是所谓的前面的代码,定时器执行的时机只能是在for循环结束,所以此时的i已经为2了。
0 0
- 循环中加定时器 i的问题
- js在循环中,传入i报错的问题
- javascript解决for循环中i取值的问题
- js,在循环中添加事件,输出循环数 i 的值,i++与++i的问题
- js for循环中加settimeout问题
- UIScrollerView循环滚动,加定时器和pageControl
- Linux gcc for 循环中 i=i++ 会造成死循环问题及 ++i / i++ 汇编分析
- Android循环的定时器
- 关于java中i++,++i和i++ + ++i的问题
- for循环中i++与++i的效率探究
- for循环中i++与++i的效率探究
- for循环中i++与++i的效率探究
- for循环中i++与++i的效率探究
- for循环中i++和++i的区别
- for循环中i++与++i的效率探究
- for()循环中 i++ 和 ++i的区别
- for循环中i++与++i的效率探究
- for循环中i++与++i的效率探究
- android 集成友盟第三方登录的问题
- jQuery Flot 绘制简单折线图
- OSI七层与TCP/IP五层网络架构详解
- linux文件系统简介
- easyui combotree加载静态数据问题(选不上)
- 循环中加定时器 i的问题
- poj 2409 Let it Bead Polya定理
- POJ 1459 Power Network网络流初步
- Android中Layout_gravity 和gravity的区别:
- Ubuntu 下的记事本工具Geany
- PHP-FPM性能优化参考
- Nginx 反向代理、负载均衡、页面缓存、URL重写及读写分离
- LeetCode—391. Perfect Rectangle
- leetcode 2. Add Two Numbers