我有一个function 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;
}
答案 0 :(得分:1)
setTimout不是递归的。您只需要设置一个计时器,该计时器将在时间过去之后再次执行代码,除非脚本取消了超时。
我会使用间隔和更优雅的填充:
const pad = (num) => ("0" + num).slice(-2);
function startTime() {
var today = new Date();
var h = pad(today.getHours());
var m = pad(today.getMinutes());
var s = pad(today.getSeconds());
var t_hour = "" + h + ":" + m;
document.getElementById("clock").innerHTML = t_hour + ":" + s;
document.title = (s % 20 <= 10) ? t_hour: "My customized title";
}
var t = setInterval(startTime, 1000);
<span id="clock"></span>