js的setInterval和setTimeout的那些浅坑

setInterval和setTimeout的区别简单提一下

  • setInterval() :按照指定的周期(以毫秒计)来调用函数或计算表达式。方法会不停地调用函数,直到 clearInterval() 被调用或窗口被关闭。
  • setTimeout() :在指定的毫秒数后调用函数或计算表达式。
setInterval(code,millisec,lang),
setTimeout(code,millisec,lang)
参数描述
code 必需。要调用的函数或要执行的代码串。
millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计。
lang 可选。 JScript | VBScript | JavaScript
需要注意的是在使用setInterval,或setTimeout 指定所要运行的函数,并需要给所运行函数传值时,
尽量不要使用 setInterval(函数名(arg0,arg1),1000)的方式进行传值,因为这样是错误的,它会导致
//js代码运行到此处时,直接执行该 函数名(arg0,arg1) 这个函数,而不会先等待1000毫秒后再次执行,这个问题
//不管是在setInterval或者setTimeout中都是如此,假设你参数传参是没有问题的情况下,如果参数有问题,那肯定直接报错了~~,也或者setInterval会出现定时器执行一次就不会再执行等错误情况
//或者使用 setInterval(”函数名(arg0,arg1)“,1000)的方式进行传值,但尽管使用了“”双引号的
//方式,包含了所要调用的 函数名称 , 但是对于这样的传参方式,也是需要进行拼接的,
//最好的在执行定时器时,定时执行所对应的functin函数的方法则是,采用setInterval或setTimeout方法体的形式进行传参
//如 setTimeout(function(){ 要调用的函数名(arg0,arg1) },1000); 采用这种方法传值,一般都是会没有问题的;setInterval也是如此

一些小例子:setInterval

<html>
<body>

<input type="text" id="clock" />
<script type="text/javascript">
var int=self.setInterval("clock()",1000);
function clock()
{
var d=new Date();
var t=d.toLocaleTimeString();
document.getElementById("clock").value=t;
}
</script>
此处清除定时器
<button onclick="int=window.clearInterval(int)">停止</button>

</body>
</html>

setTimeout实现定时不断执行,一般则是方法递归方法的方式实现

原文地址:https://www.cnblogs.com/zh94/p/7851270.html