原因就是你查到的 setTimeout只执行一次, setInterval在没有 clear前会一直执行
代码1中改成setInterval的结果就是将有N个setInterval在运行所以cpu会上100%用setTimeout不断的运行是因为你在 setTimeout里调用的函数"timeapper"里也有 setTimeout这样就形成了一个循环... 类似递归,和递归不同的一点就是有个执行的时间延迟...比如
<div id="t" style="border:1px solid #00f; padding:10px;"></div>
<div id="i" style="border:1px solid #00f; font-weight:bold; color:red; margin-top:20px; padding:10px;"></div>
<script>
var tm = 0, im = 0;
function tim(){
tm++;
document.getElementById('t').innerHTML = 'setTimeout在执行: '+tm;
} function iim(){
im++;
document.getElementById('i').innerHTML = 'setInterval在执行: '+im;
}
onload = function(){
setTimeout('tim()', 1000); //执行一次
setInterval('iim()', 1000); // 一直执行
}
</script>
代码1中改成setInterval的结果就是将有N个setInterval在运行所以cpu会上100%用setTimeout不断的运行是因为你在 setTimeout里调用的函数"timeapper"里也有 setTimeout这样就形成了一个循环... 类似递归,和递归不同的一点就是有个执行的时间延迟...比如
<div id="t" style="border:1px solid #00f; padding:10px;"></div>
<div id="i" style="border:1px solid #00f; font-weight:bold; color:red; margin-top:20px; padding:10px;"></div>
<script>
var tm = 0, im = 0;
function tim(){
tm++;
document.getElementById('t').innerHTML = 'setTimeout在执行: '+tm;
} function iim(){
im++;
document.getElementById('i').innerHTML = 'setInterval在执行: '+im;
}
onload = function(){
setTimeout('tim()', 1000); //执行一次
setInterval('iim()', 1000); // 一直执行
}
</script>
setInterval 自动重复无限次
这个你也知道吧
1。中
把代码简化一下,可以看成这样
function timeapper(){
................
setTimeout("timeapper()",1000);
}
就是自己调用自己,所以每次掉用自己都要setTimeout一次
所以虽然settimeout()只执行一次,但是在这里可以无限循环
如果这里换成setInterval 每自己调用自己一次,就会加一个定时器,慢慢就越加越多了,cpu负荷变大也是正常的。你好象只说了代码1 没说代码2吧 赫赫
function a()
{
alert("a")
}
setTimeout(a,1000)
</SCRIPT>
code b<SCRIPT LANGUAGE="JavaScript">
function a()
{
alert("a")
}
setInterval(a,1000)
</SCRIPT>
code c<SCRIPT LANGUAGE="JavaScript">
function a()
{
alert("a")
setTimeout(a,1000)//多了句这个以后
}
setTimeout(a,1000)
</SCRIPT>
code a:setTimeout()的用法 只运行一次
code b:setInterval()的用法
code c:效果与code b一样 这个可以解释你代码1还是不断的刷新的原理
setInterval()多次执行
settimeout()多用于递归调用,即递归调用自己。形成与setInterval()一样的效果。