Javascript 关闭和计数器堆叠

Javascript 关闭和计数器堆叠,javascript,closures,Javascript,Closures,所以我一直在努力掌握闭包,总的来说,我觉得我对闭包的基本知识掌握得很好 所以我一直在使用一个setInterval函数,就像这样 function addTimer(elementID,cssColor,time){ counter = 0; function timeIt(){ $(elementID).text(counter); $(elementID).css("color", cssColor); counter ++; } setInterva

所以我一直在努力掌握闭包,总的来说,我觉得我对闭包的基本知识掌握得很好

所以我一直在使用一个setInterval函数,就像这样

function addTimer(elementID,cssColor,time){
  counter = 0;
  function timeIt(){
    $(elementID).text(counter);
    $(elementID).css("color", cssColor);
    counter ++;
  }
  setInterval(timeIt, time)
}

addTimer("#timerTag", "red", 1000)
addTimer("#tt", "blue", 1000)
addTimer("#ttt", "pink", 1000)
所以每次我添加newTimer对象时,html计数器将为我添加的每个对象额外增加一个,所以一个addTimer对象将增加一个,两个它将增加两个,依此类推


任何关于为什么会出现这种情况的澄清都将不胜感激。

对于任何好奇的人来说,我实际上发现了问题所在,我声明的计数器变量没有var关键字,导致它绑定到窗口对象,而不是独立于每个新函数调用。

始终,您的应用程序将产生一个异常。