Javascript 为什么Firefox setInterval回调参数与其他浏览器不同?
我在Win7的每个浏览器中测试了这个脚本。它不仅仅适用于Firefox(3.6.13版) 除了返回随机数的Firefox之外,警报框在所有浏览器中都返回“未定义”。这是剧本Javascript 为什么Firefox setInterval回调参数与其他浏览器不同?,javascript,firefox,setinterval,Javascript,Firefox,Setinterval,我在Win7的每个浏览器中测试了这个脚本。它不仅仅适用于Firefox(3.6.13版) 除了返回随机数的Firefox之外,警报框在所有浏览器中都返回“未定义”。这是剧本 function nextSlide(nav){ alert(nav); } jQuery(function(){ var set = setInterval(nextSlide, 2000); }); 这是一个额外的参数是回调延迟的毫秒数。从: 回调参数 setInterval()将回调调用到回调函数
function nextSlide(nav){
alert(nav);
}
jQuery(function(){
var set = setInterval(nextSlide, 2000);
});
这是一个额外的参数是回调延迟的毫秒数。从: 回调参数 setInterval()将回调调用到回调函数中的延迟毫秒数传递给回调函数,如果回调函数需要其他参数,则可能会混淆回调函数。要避免这个问题,请使用匿名函数调用回调函数 解决办法是改为写以下内容:
var set = setInterval(function() { nextSlide(); }, 2000);
MarkByers在Mozilla文档中的解释是正确的 但是,这是一个Firefox扩展。这个——至少在HTML5工作草案中是这样——实际上有一个不同的要求。当然,因为这是一个易变域 句柄=窗口。setInterval(处理程序[,超时[,参数]]) 计划每超时毫秒运行一次处理程序的超时。任何参数都直接传递给处理程序 因此,Firefox可以被视为违反了这一点,即
参数。长度为1,即使传递了“无参数”
我相信对于HTML4来说,它只是一个没有定义任何“官方标准”的实际实现——或者至少我所知道的没有——在这种情况下,Firefox可以随心所欲地做任何事情。我很乐意提供更正/参考
编辑:
Firefox确实支持参数传递,正如Neil和arguments所指出的那样。length
总是比传递的参数数量多一个,以解释“偏移量”数据——在参数上没有任何魔力。length
(这本身就非常可怕)
记住这一点很重要:在计时器回调或面对浏览器差异时,不要使用和/或小心使用参数.length
。(这与其他事件回调是内联的)。Firefox也支持这一点。额外的lateness参数只是被附加到额外参数的列表中。哇!这是随机生成的gravatar吗?如果函数需要参数,则应根据下面的答案将其作为附加参数传递给setInterval。