setTimeout(cb, time);复制代码
setTimeout传入的是两个参数,第一个参数是cb表明的是回调函数callback,第二个表明的是时间,以ms计算git
setInterval(cb, time);复制代码
setInterval传入的也是两个参数,第一个参数是cb表明的是回调函数callback,第二个表明的也是时间,以ms计算github
setTimeout含义是定时器,到达必定的时间触发一次,可是setInterval含义是计时器,到达必定时间触发一次,而且会持续触发面试
function run() {
//其余代码
setTimeout(function(){
run();
}, 10000);
}
setInterval(function(){
run();
}, 10000);复制代码
setInterval(function(){
// ...
}, 100)复制代码
var i = 0;
const o = {
i: 1;
fn: function(){
console.log(this.i);
}
}
setTimeout(o.fn, 1000); //0复制代码
这里能够看出,若是是o对象调用的话,就会是1,可是他输出的确实0,由于有两点缘由:
1.setTimeout是运行在全局环境下的
2.其实他是发生了下面的步骤:bash
var a = o.fn;
a();
//只有这样,this才会被绑定到全局上去复制代码
其实不是的,咱们先来看一下,setTimeout的一个面试中常常会问到的问题网络
setTimeout(function(){
console.log(1);
},0);
console.log(2);复制代码
其实这个特性说来话长,输出的是先2后1,由于setTimeout会把第一个函数放进任务队列,而后走一个event loop,因此会先输出的是2,才会输出1函数
那咱们试想一下,这个特性咱们能够用来作什么?当事件冒泡的时候,会正常状况下,会先触发子元素,而后在触发父元素,那么咱们使用这个特性是否是能让其先触发父元素,在触发子元素,(题主没试过)oop
备注:
若是以为写的好,动动手指点个赞,若是想要关注我,能够去在下的github点个赞,我会坚持输出,致敬共同努力的同志们🙏ui
知识源于网络,实践产生真知,若有雷同,侵删。this