zoukankan      html  css  js  c++  java
  • 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是必须的。其余参数依次是需要执行函数的参数。

  • 相关阅读:
    3月6日
    2月28日
    2月23日
    2月20日
    2月19日
    2月18日
    2月17日
    2月16日
    2月15日
    面试算法题——硬币找零
  • 原文地址:https://www.cnblogs.com/wangtianli/p/7016674.html
Copyright © 2011-2022 走看看