Jquery 如何在函数内部更新变量值以对顶级变量生效

Jquery 如何在函数内部更新变量值以对顶级变量生效,jquery,scope,Jquery,Scope,这里,变量计时器在timerIncrement函数之外声明。由于作用域可变,我知道更改函数内部的值不会更改函数外部的值。但是我真的需要想出这样的方法,一旦idleTime>5它就会使用新的计时器 我怎样才能做到这一点 jQuery(document).ready(function($) { var timer = 1000; // //increment the idle time counter every sec. var idleInterval = setInterv

这里,变量计时器在
timerIncrement
函数之外声明。由于作用域可变,我知道更改函数内部的值不会更改函数外部的值。但是我真的需要想出这样的方法,一旦
idleTime>5
它就会使用新的计时器

我怎样才能做到这一点

jQuery(document).ready(function($) {

   var timer = 1000;
  //   //increment the idle time counter every sec.
  var idleInterval = setInterval(timerIncrement, timer); // 1 sec


    function timerIncrement() {
      while(idleTime < 5){
        console.log('test '+idleTime);
        idleTime = idleTime + 1;
         }  
         timer = 2000;//how to make this take affect on the top so that setInterval run at this newly set timer
         console.log('reached max');

    }

}
jQuery(文档).ready(函数($){
无功定时器=1000;
////每秒钟递增一次空闲时间计数器。
var idleInterval=setInterval(timerIncrement,timer);//1秒
函数timerIncrement(){
while(空闲时间<5){
console.log('test'+idleTime);
空闲时间=空闲时间+1;
}  
timer=2000;//如何使其在顶部生效,以便setInterval在新设置的计时器上运行
console.log(“达到最大值”);
}
}

因为interval是在首次调用
setInterval
时设置的。修改
delay
的值将无效

在这种情况下,您应该使用
setTimeout

$(document).ready(function() {
    var timer = 1000;
    var idleInterval = setTimeout(timerIncrement, timer); // 1 sec

    function timerIncrement() {
        timer = 2000
        //Recursively call your method
        idleInterval = setTimeout(timerIncrement, timer);
    }
});
这应该起作用:

function timerIncrement() {
      while(idleTime < 5){
        console.log('test '+idleTime);
        idleTime = idleTime + 1;
         }  
         timer = 2000;//how to make this take affect on the top so that setInterval run at this newly set timer
         clearInterval(idleInterval); 
         idleInterval = setInterval(timerIncrement, timer);
         console.log('reached max');

    }
函数timerIncrement(){
while(空闲时间<5){
console.log('test'+idleTime);
空闲时间=空闲时间+1;
}  
timer=2000;//如何使其在顶部生效,以便setInterval在新设置的计时器上运行
clearInterval(idleInterval);
idleInterval=设置间隔(timerIncrement,timer);
console.log(“达到最大值”);
}