setTimeout和setInterval区别?
间歇调用和超时调用
超时调用:window对象的setTimeout()方法,指定时间后调用:
setTimeout(function(){ // 推荐
console.log(3)
},1000);
setTimeout('console.log(3)',1000); // 不推荐,字符串格式会影响性能
setTimeout()返回一个数值ID表示表示超时调用,使用clearTimeout(ID)取消超时调用;
间歇调用:window对象的setInterval(),指定时间重复执行:
setInterval(function(){ // 推荐
console.log(3)
},1000);
setInterval('console.log(3)',1000); // 不推荐,字符串格式会影响性能
setInterval()返回一个数值ID表示表示超时调用,使用clearInterval(ID)取消间歇调用;
注意:间歇和超时调用时,不一定会在指定时间后调用函数,这两种方法将会在指定时间后将函数添加到执行队列中,因为javascript是单线程的,如果执行队列中有其他要执行的函数,会依次执行(即这两种调用的函数将会在前面函数执行完毕后执行),如果队列中没有执行的函数,将会立即执行。一般情况下我们很少使用间歇调用,因为间歇调用可能导致,前一次间歇调用没有执行完毕后一次间歇调用就开始执行了。