js中的setTimeout遇到的困惑
来源:互联网 发布:js td赋值 编辑:程序博客网 时间:2024/05/23 11:06
1.定义 setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式。
注意事项: 1、如果 setTimeout()中的要执行的方法,可以加引号或不加引号。如果 setTimeout()中的要执行的代码,则必须加引号!!!
2、.setTimeout()中的this指向的是window,而不是调用者。
2.
function mytest() {
for(var i = 0; i < 5; i ++)
setTimeout(console.log(i),0);
}
function mytest() {
for(var i = 0; i < 5; i ++)
setTimeout(function(){console.log(i)},0);
}
经测试发现,两者打印出来的值并不是一样的,可以自行测试。经查看资料发现,原因主要在于js是单线程的。查阅资料说明如下:
比如有一个函数fun0在执行开始时创建了一个定时器T1,T1定时器将在200ms后被触发指定函数。这时我们需要考虑一个问题,假设fun0的执行时间为250ms(大于200ms),那将会怎样?前面已经说过,js是单线程的,所以不存在fun0和定时器同时执行的情况。这时候定时器制定的函数会在fun0执行完后才执行,定时器的等待时间为250ms,并不是我们指定的200ms。
对于javascript这样的执行方式,我们可以想象在函数执行过程中有两个队列。队列Q1是指执行队列,每次只能执行一个函数;队列Q2就是等待队列,存放着将要执行的函数。每当有一个函数要执行时,就会先把这个函数放进等待队列,如果Q1为空,那么久立即执行这个函数。当然在大多数情况下,函数都是立即执行的。
所以第二个函数中的settimeout要等for循环完成之后,再执行,所以打印出来都是5.
- js中的setTimeout遇到的困惑
- js中的setTimeout()的用法
- JS中的setTimeout和setInterval的区别
- JS中的setTimeout和setInterval的区别
- js中的setTimeout详解
- js 中的SetTimeOut()
- js中的setTimeout不起作用
- js中的setTimeout不起作用
- js 的settimeout
- JS setTimeout 的例子
- JS中的window.setTimeout()详解
- js中的setTimeout和setInterval
- JS中的window.setTimeout()详解
- JS中的setTimeout和setInterval
- JS中的window.setTimeout()详解
- js中的setTimeout与setTimeInterval
- JS中的window.setTimeout()详解
- JS中的window.setTimeout()…
- java垃圾回收机制GC所使用的算法
- TabLayout+ViewPager 懒加载
- 滑动退出Activity的两种方法
- mysql--基准测试
- jvm调优
- js中的setTimeout遇到的困惑
- 面试题-华为(16年)-约瑟夫环:每隔两个数删掉一个数...-4
- 在 Android 中 使用JNI
- 数据模型分析
- HTML基础认识
- 判断<a>标签跳转
- 题目1208:10进制 VS 2进制
- mysql存储过程_介绍_入门实例
- HoG 和PHoG (pyramid HoG)