设置超时 Javascript 'Timer'

setTimeout Javascript 'Timer'

let doit = (from, to) => {
  let a = setTimeout(doit, 500, ++from);
  console.table(from);
  if (from === to) {
    clearTimeout(a)
  }
};

 doit(6, 13);
编写一个每秒打印一个数字的 printNumbers(from, to) 函数, 从 from 开始并以 to 结束。 你能描述一下为什么这个计时器没有停止吗? 能不能评论回复一下。

它不会停止,因为您没有将 to 传递给递归调用。您只超过了 ++from。如果您记录两个值,这将是相当明显的:

let doit = (from, to) => {
  let a = setTimeout(doit, 500, ++from);
  console.log(from, to);
  if (from === to) {
    clearTimeout(a)
  }
};

 doit(6, 13);

解决办法也是通过to:

let doit = (from, to) => {
  let a = setTimeout(doit, 500, ++from, to); // 
  console.log(from, to);
  if (from === to) {
    clearTimeout(a)
  }
};

 doit(6, 13);