码迷,mamicode.com
首页 > 其他好文 > 详细

setTimeout的新发现

时间:2017-06-15 14:20:32      阅读:172      评论:0      收藏:0      [点我收藏+]

标签:控制台   developer   子函数   tar   ram   show   code   作用域   params   

最近遇到个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的新发现

标签:控制台   developer   子函数   tar   ram   show   code   作用域   params   

原文地址:http://www.cnblogs.com/wangtianli/p/7016674.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!