Javascript 为什么clearInterval在我的脚本中不起作用?

Javascript 为什么clearInterval在我的脚本中不起作用?,javascript,closures,Javascript,Closures,我的clearInterval方法有问题。 我在FrontendMasters上深入了解了JS,有一个练习需要使用setInterval,每秒记录一个字符串,然后在5秒后运行clearInterval。我有权获得正确的解决方案,但我想知道为什么我的解决方案无法获得更好的理解。console.log('clear called',func')在5秒后运行,并记录清除调用的字符串和函数体。我曾尝试使用setTimeout包装wrapper.stop(),但也没有成功。我用闭包来解决这个问题。这是我的

我的clearInterval方法有问题。 我在FrontendMasters上深入了解了JS,有一个练习需要使用setInterval,每秒记录一个字符串,然后在5秒后运行clearInterval。我有权获得正确的解决方案,但我想知道为什么我的解决方案无法获得更好的理解。
console.log('clear called',func')在5秒后运行,并记录
清除调用的
字符串和函数体。我曾尝试使用setTimeout包装
wrapper.stop()
,但也没有成功。我用闭包来解决这个问题。这是我的剧本

function sayHowdy() {
 console.log('Howdy');
}


function everyXsecsForYsecs(func, interval, totalTime) {
 function clear() {
   console.log('clear called', func);
   clearInterval(func);
 }
 return {
   start() {
     setInterval(func, interval);
   },
   stop() {
     setTimeout(clear, totalTime);
   }
 }
}


const wrapper = everyXsecsForYsecs(sayHowdy, 1000, 5000);
wrapper.start();
wrapper.stop();

谢谢

clearInterval
不使用函数,而是使用
setInterval
时返回的计时器id(这样您就可以在同一个函数上设置多个计时器,并分别取消它们)。要使用它,请在
everyXsecsForYsecs

  var timer;
然后将计时器分配给它:

 timer = setInterval(func, interval);

然后您可以
clearInterval(timer)
clearInterval
不使用函数,而是使用
setInterval
时返回的计时器id(这样您就可以在同一个函数上设置多个计时器,并分别取消它们)。要使用它,请在
everyXsecsForYsecs

  var timer;
然后将计时器分配给它:

 timer = setInterval(func, interval);

然后你可以
clearInterval(timer)

我已经更新了脚本,现在它可以工作了。我不知道我不能在
clearInterval
方法中使用函数,但我必须声明一个变量并将
setInterval
方法分配给它。我已经更新了脚本,它现在可以工作了。我不知道我不能在
clearInterval
方法中使用函数,但我必须声明一个变量并将
setInterval
方法分配给它。