js中setTimeout和setInterval工作原理有什么区别吗?

请问:functionf1(){console.log("nihao");setTimeout("f1()",20);}f1();和functionf1(){consol... 请问:
function f1(){
console.log("nihao");
setTimeout("f1()",20);
}
f1();

function f1(){
console.log("nihao");
}
setInterval("f1()",20);
执行上有什么区别吗?从工作原理上分析哈。
展开
 我来答
物理公司的
2015-07-14 · TA获得超过5695个赞
知道大有可为答主
回答量:6105
采纳率:86%
帮助的人:1372万
展开全部
  1. 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。

幸巴达
2013-04-04 · TA获得超过1.2万个赞
知道大有可为答主
回答量:6953
采纳率:38%
帮助的人:2461万
展开全部
setTimeout 是一定时间后执行一次。

setInterval 是每隔一段时间执行一次;

你写的代码在实际执行中效果是一样的

不过你的第二个参数是20,单位是毫秒,是不是太短了?
本回答被提问者采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式