js中setTimeout和setInterval工作原理有什么区别吗?
function f1(){
console.log("nihao");
setTimeout("f1()",20);
}
f1();
和
function f1(){
console.log("nihao");
}
setInterval("f1()",20);
执行上有什么区别吗?从工作原理上分析哈。 展开
setInterval() 定义和用法setInterval() 方法可按照指定的周期(以毫秒计)来执行函数或表达式。该方法会不停地循环调用函数,直到使用 clearInterval() 明确停止该函数或窗口被关闭。clearInterval() 函 数的参数即 setInterval() 返回的 ID 值。
语法
setInterval(code,millisec[,"lang"])
code 必需。要调用的函数或要执行的代码串。
millisec 必须。周期性执行或调用 code 之间的时间间隔,以毫秒计
返回值
一个可以传递给 Window.clearInterval() 从而取消对 code 的周期性执行的值。
2.
<html>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<body>
<input type="text" id="clock"
size="35" />
<script language=javascript>
var
int=setInterval("clock()",50);
function clock(){
var t=new
Date();
document.getElementById("clock").value=t;
}
</script>
</form>
<button
onclick="window.clearInterval(int)">
停止 interval
事件</button>
</body>
</html>
3.setTimeout() 定义和用法
setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,该方法与 setInterval() 方法不同的是该方法只执行一次。
语法
setTimeout(code,millisec)
code 必需。要调用的函数后要执行的
JavaScript 代码串。
millisec 必需。在执行代码前需等待的毫秒数,以毫秒计。
提示:
(1)setTimeout() 虽然是只执行一次代码。但如果许要多次调用,除了使用 setInterval() 外还可以让被执行的代码里面自身再次调用 setTimeout()
方法已达到多 次执 行的目的。
(2)另外setTimeout()方法也同样可以返回一个ID值,以方便使用clearInterval()方法 对使用setTimeout()方法的取消。
4.
<html>
<meta http-equiv="Content-Type" content="text/html;
charset=utf-8" />
<head>
<script
type="text/javascript">
function timedMsg(){
var
t=setTimeout("alert('3 秒时间到!')",3000);
}
function
timedMsgAways(){
alert('3 秒时间到!');
var
t=setTimeout("timedMsgAways()",3000);
}
</script>
</head>
<body>
<form>
<input
type="button" value="3 秒后警告" onClick="timedMsg()"><br />
<input
type="button" value="循环 3 秒警告"
onClick="timedMsgAways()">
</form>
</body>
</html>
5.对于这两个方法,需要注意的是如果要求在每隔一个固定的时间间隔后就精确地执行某动作,那么最好使用setInterval,而如果不想由于连续调用产生互相干扰的问题,尤其是每次函数的调用需要繁重的计算以及很长的处理时间,那么最好使用setTimeout。