这有什么区别:

function blankWord(){
    console.log('blank!');
    setTimeout(blankWord, 5000);
}
blankWord();

它将每5秒调用一次该函数,这是:
function blankWord(t){
    console.log('blank!');
    setTimeout(blankWord, t);
}
blankWord(5000);

哪个快速疯狂地重复调用该函数?

最佳答案

由于缺少第二种形式的参数,因此您从第二次调用时传递undefined,这实际上将导致4ms的超时(which is the browser minimum)。

使用函数包装器可以安全地传递所需的参数:

function blankWord(t){
    console.log('blank!');
    setTimeout(function(){blankWord(t)},t);
}
blankWord(5000);

将参数作为第三个参数传递会淘汰较旧的IE,这就是为什么在IE8失效之前不应该使用它的原因。

07-24 17:05