Javascript 时间递归函数的性能

Javascript 时间递归函数的性能,javascript,performance,Javascript,Performance,我有一个处理页面上显示的时钟的函数startTime(),该函数的最后一行是var t=setTimeout(function(){startTime()},1000) 作为一个具有超时的递归函数,性能方面的影响是什么?随着时间的推移,它会消耗越来越多的内存吗?我的意思是,如果我在一天内打开这个页面,并将其与打开一周相比,有什么区别?如果这个方法不太好,有更好的方法吗?另外,请随意为我的代码提供一些提示(标准和更好的键入) 谢谢 完整代码: function startTime() {

我有一个处理页面上显示的时钟的
函数startTime()
,该函数的最后一行是
var t=setTimeout(function(){startTime()},1000)

作为一个具有超时的递归函数,性能方面的影响是什么?随着时间的推移,它会消耗越来越多的内存吗?我的意思是,如果我在一天内打开这个页面,并将其与打开一周相比,有什么区别?如果这个方法不太好,有更好的方法吗?另外,请随意为我的代码提供一些提示(标准和更好的键入)

谢谢

完整代码:

function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();

    // function checkTime(): add a zero in front of numbers<10
    h = checkTime(h);
    m = checkTime(m);
    s = checkTime(s);
    var t_hora = h + ":" + m;
    document.getElementById("clock").innerHTML = t_hour + ":" + s;
    if (s%20 <= 10) {
      document.title = t_hour;
    } else {
    document.title = "My customized title";
  }
  var t = setTimeout(function(){ startTime() }, 1000);
}

function checkTime(i) {
  if (i < 10) {
    i = "0" + i;
  }
return i;
}
函数开始时间(){
var today=新日期();
var h=today.getHours();
var m=today.getMinutes();
var s=today.getSeconds();

//函数checkTime():在数字前面添加一个零setTimout不是递归的。您只需设置一个计时器,在时间过去后再次执行代码,除非脚本取消超时

我会使用间隔和更优雅的填充:

constpad=(num)=>(“0”+num).slice(-2);
函数startTime(){
var today=新日期();
var h=pad(today.getHours());
var m=pad(today.getMinutes());
var s=pad(today.getSeconds());
变量t_hour=“+h+”:“+m;
document.getElementById(“时钟”).innerHTML=t_hour+“:”+s;

document.title=(s%20 setTimeout不是递归的。您只需设置一个计时器,在时间过去后再次执行代码,除非脚本取消超时。此外,由于您没有传递任何变量,您只需执行
var t=setTimeout(startTime,1000);
也用于填充,我使用这个:
const pad=(num)=>(“0”+num).slice(-2);
我认为它是递归的,因为
函数(){startTime()…
在setTimeout内部,而不是setTimeout本身,因为它一次又一次地调用它,每秒。假设我的startTime在t=1中,然后再次调用startTime,这个新的不是2,在t=3中再次调用startTime;如果返回结果(即使没有返回,也不会这样做),它不会存储在某个地方吗?递归具体地说,这意味着调用堆栈增长,递归调用返回到触发它的调用。这里不是这种情况。堆栈上在任何时候都只有一个
startTime
。@mplungjan如何进行填充?您能举个例子吗?Pad是一个函数,接收num作为参数,在字符串中添加前导0格式化,然后获取最后两个字符;如果num=“032”它返回“32”,如果num=“09”它返回“09”。我正确吗?另一个问题,为什么pad必须是常量?是的,它就是这样做的。我将它设为常量,因为它永远不会改变