首页 > 代码库 > setTimeout的新发现
setTimeout的新发现
最近遇到个setTimeout回调函数做闭包出现的问题,解决这种问题时发现笔者给setTimeout加了第三个参数,瞬间觉得自己好像错过了什么。。。。。。
setTimeout API文档链接:https://developer.mozilla.org/en-US/docs/Web/API/WindowOrWorkerGlobalScope/setTimeout
一直以来,以为setTimeout的用法应该是这样的:setTimeout(callback,delay);
callback:回调函数。
delay:执行代码前需等待的毫秒数。
今天我看到下面这段为解决闭包带来的子函数作用域访问的是父函数执行后的变量值 问题,如下代码,瞬间不明所以
for (var i = 0; i < 5; i++) {
setTimeout(function(j) {
console.log(new Date, j);
}, 1000, i);
}
console.log(new Date, i);
于是,API文档可以了解到,猜测第三个参数就是函数执行时的参数的值。
setTimeout(function(value){ console.log(value); },1000,‘你会成功的,wtl!‘);
控制台输出,‘你会成功的,wtl!’;
总结:
setTimeout的完整形式应该是这样的:setTimeout(callback,delay,param1,param2,...);其中,callback,delay是必须的。其余参数依次是需要执行函数的参数。
setTimeout的新发现
声明:以上内容来自用户投稿及互联网公开渠道收集整理发布,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任,若内容有误或涉及侵权可进行投诉: 投诉/举报 工作人员会在5个工作日内联系你,一经查实,本站将立刻删除涉嫌侵权内容。