代码之家  ›  专栏  ›  技术社区  ›  Ben

作为默认间隔处理程序参数的奇怪随机值

  •  3
  • Ben  · 技术社区  · 15 年前

    刚刚发现这个。这并没有真正影响到任何事情,但我想知道为什么会发生。

    如果我在firefox中使用firebug运行以下代码:

    setInterval(function(param) 
         {
            console.log("param is %o",param)
         },500);
    

    参数似乎被分配了一个模糊的随机值:

       param is -2
        param is -1
        param is -2
        param is 1
        param is -1
        param is 6
        param is -1
        param is 0
        param is -2
        param is 2
        param is 0
        param is 2
        param is 0
        param is 0
        param is 0
    [..]
        param is 0
        param is 0
        param is 0
        param is 0
        param is 0
        param is 0
        param is 0
        param is 911
        param is 0
        param is 0
        param is 0
        param is -1
    

    我很感激我没有向setinterval传递任何参数来传递函数,但是为什么javascript选择传递这个随机数呢?

    我本以为是未定义的或类似的…

    干杯

    P.S.尚未在其他浏览器中进行测试

    2 回复  |  直到 15 年前
        1
  •  3
  •   SLaks    15 年前

    这似乎取决于火狐的CPU使用情况。

    我想是从应该调用回调开始的延迟。

    编辑 : I was right . 这是延迟调用回调的毫秒数。

        2
  •  0
  •   Dan Beam    15 年前

    这是由自动设置的间隔ID window.setInterval . 如果存储结果,可以稍后清除间隔(停止该间隔)

    var intID = window.setInterval( function(){ alert("I'm annoying!"); }, 10000 );
    
    // this will kill it before it annoys you, :D
    window.clearInterval( intID );
    

    这也适用于 window.setTimeout :

    var timeID = window.setTimeout( function(){ alert("I'm annoying!"); }, 10000 );
    
    // this will kill it before it annoys you, :D
    window.clearTimeout( timeID );