刚刚开始学习JS,看到使用Date对象创建简单时钟<script language="javascript" type="text/javascript">
function showTime(){
var time = new Date();
var hours = time.getHours();
var minute = time.getMinutes();
var second = time.getSeconds();
if(hours<10)
hours = "0" + hours;
if(minute<10)
minute = "0" + minute;
if(second<10)
second = "0" + second;document.getElementsByName('txtTime')[0].value = hours + ":" + minute + ":" + second;
setTimeout("showTime()",1000);
}
</script>setTimeout("showTime()",1000);一切正常
换成setTimeout(showTime(),1000);就内存溢出了——out memory at line:19
为什么呢?

解决方案 »

  1.   

    因为setTimeout('函数名',time)这是这个函数的格式
    调用的函数名必须用''或者""扩起来
    说白了
    第一个参数必须是个字符串
    而这个字符串是某个要调用的函数名
      

  2.   

    意思是如果该setTimeout方法的第一个参数输入的不是字符串,会无法识别,然后内存溢出或者死循环?
      

  3.   

    setTimeout("showTime()",1000);orsetTimeout(showTime,1000);
      

  4.   

    我的意思是。。是不是。步进到setTimeout(showTime(),1000)是无法识别showTime() ,或者进入showTime()方法再次步进到setTimeout(showTime(),1000),再进入showTime(),然后就死循环了?
      

  5.   

    恩应该是这个意思
    偶猜测
    程序努力获取一个字符串
    就去执行showtime
    但是你在showtime里又执行showtime
    而不返回任何字符
    所以会超过内存死循环如果你是settimeout(a(),1000)
    function a(){
     return('aaa()');
    }
    估计就不会死掉
    你可以试试
      

  6.   

    果然如此,LonelyStark好人啊!结贴!