Squ*_*rrl 9 javascript parameters settimeout
这有什么区别:
function blankWord(){
console.log('blank!');
setTimeout(blankWord, 5000);
}
blankWord();
Run Code Online (Sandbox Code Playgroud)
每隔5秒就调用一次该函数,这个:
function blankWord(t){
console.log('blank!');
setTimeout(blankWord, t);
}
blankWord(5000);
Run Code Online (Sandbox Code Playgroud)
哪个函数反复疯狂地快速调用?
由于您缺少第二种形式的参数,因此undefined从第二次调用开始,这实际上会导致4ms的超时(这是浏览器的最小值).
使用函数包装器,安全地传递您需要的参数:
function blankWord(t){
console.log('blank!');
setTimeout(function(){blankWord(t)},t);
}
blankWord(5000);
Run Code Online (Sandbox Code Playgroud)
将参数作为第三个参数传递会淘汰旧的IE,这就是为什么在IE8死之前不应该使用它.
第一个脚本5000每次都使用第二个参数调用setTimeout .
第二个脚本调用它t.第一次是5000(来自blankWord(5000);).以后每次都是undefined(从setTimeout(blankWord).
如果要传递参数,请将它们作为第三个参数传递给数组setTimeout.
setTimeout(blankWord, t, [t])
Run Code Online (Sandbox Code Playgroud)
请参阅mdn以获取polyfill以支持不识别函数的三个参数形式的旧浏览器.
| 归档时间: |
|
| 查看次数: |
8035 次 |
| 最近记录: |