function count( )
{
     var dateAndTime = new Date();
     var year = dateAndTime.getFullYear();
     var month = dateAndTime.getMonth();
     var realMonth = parseInt(month) + 1;
     var day = dateAndTime.getDate();
     document.getElementById("date").value = year + "年" + realMonth + "月" + day + "日";
     var hour = dateAndTime.getHours();
     var minute = dateAndTime.getMinutes();
     var second = dateAndTime.getSeconds();
     document.getElementById("time").value = hour + "时" + minute + "分" + second + "秒";
     setTimeout('count()',500);
}
这是用js写的一个显示时间的函数,感觉怪怪的,想知道到底是不是递归呢?为什么我写成死循环,在循环里设定时间延迟
浏览器就死掉了,这样却可以?

解决方案 »

  1.   

    1.判断是否是递归的条件
       【1】函数是否可以无限执行
       【2】函数是否有终止条件,没有终止条件那就是死循环了2.写成死循环浏览器会死掉
        因为你写成死循环了,浏览器会一直在执行这个循环代码,浏览器肯定不会响应,因为这部分js代码没有执行完全。setTimeout('count()',500); 这句话是延迟执行,0.5秒之后再次执行count函数,这个地方时异步的,而写成死循环是同步的,所有两者是有区别的3.另外一种写法
       这种写法可以满足0.5秒执行一次,既然要间隔时间执行,建议楼主这么写
      function count(){
        alert(1);
     } window.setInterval(function(){
       count();
     },500);
    每隔500毫秒执行一次count函数。