这两者之间有什么不同:
function blankWord(){
console.log('blank!');
setTimeout(blankWord, 5000);
}
blankWord();
这会按照预期每5秒调用一次函数:
function blankWord(t){
console.log('blank!');
setTimeout(blankWord, t);
}
blankWord(5000);
哪个会疯狂地重复调用函数?
这两者之间有什么不同:
function blankWord(){
console.log('blank!');
setTimeout(blankWord, 5000);
}
blankWord();
这会按照预期每5秒调用一次函数:
function blankWord(t){
console.log('blank!');
setTimeout(blankWord, t);
}
blankWord(5000);
由于您在第二个表单中缺少参数,因此从第二次调用开始传递undefined
,这将导致4ms的超时(这是浏览器的最小值)。
使用函数包装器,安全地传递所需的参数:
function blankWord(t){
console.log('blank!');
setTimeout(function(){blankWord(t)},t);
}
blankWord(5000);
将参数作为第三个参数传递会使旧版IE失效,因此在IE8死亡之前不应使用此功能。
setTimeout(blankWord, t, [t])
请参考MDN上的polyfill以支持不认识函数三个参数形式的旧浏览器。
setTimeout
,而不是单独的参数,例如 setTimeout(blankWord, t, t, ...etc);
?当时的 polyfill 期望使用 setTimeout(func, delay, arg1, arg2)
的语法。 - Sebastian Simon
setTimeout(blankWord, 5000, 'word')
是什么意思? - putvande