这有什么区别:
function blankWord(){
console.log('blank!');
setTimeout(blankWord, 5000);
}
blankWord();
每5秒调用一次该函数,并且:
function blankWord(t){
console.log('blank!');
setTimeout(blankWord, t);
}
blankWord(5000);
哪个函数反复疯狂地快速调用?
答案 0 :(得分:8)
由于您在第二个表单中缺少参数,因此从第二个调用开始传递undefined
,这实际上会导致4ms的超时(which is the browser minimum)。
使用函数包装器安全地传递所需的参数:
function blankWord(t){
console.log('blank!');
setTimeout(function(){blankWord(t)},t);
}
blankWord(5000);
将参数作为第三个参数传递来淘汰旧IE,这就是为什么在IE8死之前不应该使用它。
答案 1 :(得分:6)
第一个脚本每次都使用第二个参数5000
调用setTimeout。
第二个脚本使用t
调用它。第一次是5000
(来自blankWord(5000);
)。随后每次undefined
(来自setTimeout(blankWord
)。
如果要传递参数,请将它们作为setTimeout
的第三个参数传递给数组。
setTimeout(blankWord, t, [t])
请参阅mdn for a polyfill以支持不识别该函数的三个参数形式的旧浏览器。