无法从javascript函数重置全局计时器

时间:2014-05-02 00:36:49

标签: javascript shadowing

我已经尝试了各种方法来确保我的计时器变量是全局的(我相信它是)但为什么我不能清除间隔?

var timer;    

function refreshtimer(timer) {
  stoptimer(timer);
  timer = window.setInterval(postmsg, time*1000);
}

function stoptimer(timer) {
  window.clearInterval(timer);
  timer = null;
}

我相信这是相关的代码部分;但是,可以找到整个代码here

1 个答案:

答案 0 :(得分:4)

您不能为函数和全局变量的参数使用相同的变量名,并且可以同时访问这两个变量。名为timer的参数优先,因此您无法访问名为timer的全局变量。

将全局变量的名称更改为timerId,然后您可以唯一引用要引用的变量。

var timerID;    

function refreshTimer() {
    stopTimer();
    timerID = setInterval(postmsg, time*1000);
}

function stopTimer() {
    clearInterval(timerID);
}