setTimeout第三个参数
一直没发现setTimeout居然可以传三个以上的参数,原谅我菜了。。。特地上MDN看了下用法。
用法
setTimeout,用于延迟触发函数。
setTimeout(fn, delay);
fn表示触发函数,delay表示延迟多少毫秒。
等等,其他就不说了。。。
传参方式
从setTimeout第三个开始的参数会传递给function当作其参数。
setTimeout(function() {
console.log(arguments); // Arguments(3) ["a", "b", "c", callee: ƒ, Symbol(Symbol.iterator): ƒ]
}, 0, 'a', 'b', 'c');
参数顺利传入。
注:IE10及以上支持。
其他用法
还记得这道题么,
for (var i = 0; i < 5; ++i) {
setTimeout(function() {
console.log(i);
});
}
由于闭包照成了最后结果5个5,此时就可以使用setTimeout传参的方式来解决了:
for (var i = 0; i < 5; ++i) {
setTimeout(function(i) {
console.log(i);
}, 0, i);
}
其他处理方式:1. let。2. IIEF。