setTimeout 如何在下面的时钟代码中像 setInterval 一样工作,甚至 setTimeout 只执行一次?

how setTimeout act like setInterval in the clock code below even setTimeout execute one time only?

请查看我的代码以了解问题!!!

这就是问题所在?

  1. 为什么他们使用 setTimeout 并且它只执行 1 次,而时钟需要一些像 setInterval 这样的方法连续执行?甚至 setInterval 在此代码中工作,但我的问题是 setTimeout 仅执行 1 次为什么它在此代码中工作?

  2. 为什么 1 秒 = 1000 而 500 毫秒?

    请帮帮我

我将 setTimeout 更改为 setInterval 并且两者都有效 这使问题变得更大 如何在这个例子中两者做同样的事情,即使它们不一样?

function startTime() {
    var today = new Date();
    var h = today.getHours();
    var m = today.getMinutes();
    var s = today.getSeconds();
    m = checkTime(m);
    s = checkTime(s);
    document.getElementById('txt').innerHTML = h + ":" + m + ":" + s;
    var t = setTimeout(startTime, 500);
}
function checkTime(i) {
    if (i < 10) {i = "0" + i}; // add zero in front of numbers < 10
    return i;
}

  1. 它的行为类似于 setInterval 因为它每 0.5 秒递归调用一次自己:setTimeout(startTime, 500)

  2. 你是对的,它每 ~0.5 秒运行一次,而不是作为区域时钟运行 1 秒。也许他们认为 startTime 中的逻辑需要 0.5 秒,所以加起来需要 1 秒,但是,显然这不是真的。