zoukankan      html  css  js  c++  java
  • 闭包,定时器,循环

    1.对于一个一般的循环,顺序输出01234

    for(var i=0;i<5;i++){
    console.log(i)
    }

    2.如果加上定时器,实现每隔两秒出现一个数字

    for(var i=0;i<5;i++){
        setTimeout(function(){
            console.log(i);//5个4
        },2000)
    }

    你会发现出现了5个4,并且还是一起出的,原因是定时器是异步函数,外部函数执行的很快,等执行定时器时for循环已经执行完毕,i等于4,我们可以这样改

    for(var i=0;i<5;i++){
    (function(){
     setTimeout(function(x){
            console.log(x);//01234
        },2000)
    })(i)
    }

    你又会发现,现在是出现01234,但是感觉定时器没起作用,两秒后01234一起出现,我们可以这样改

    for(var i=0;i<5;i++){
    (function(){
     setTimeout(function(x){
            console.log(x);//01234
        },x*2000)
    })(i)
    }

    这样你就会发现效果实现了,每隔两秒出现一个数字

  • 相关阅读:
    软件开发术语
    网络规划与设计
    MPLS LDP协议
    MPLS 基础
    CallAfter
    LongRunningTasks
    Non-blocking GUI
    WorkingWithThreads
    Python: Running Ping, Traceroute and More
    wxPython and Threads
  • 原文地址:https://www.cnblogs.com/whybxy/p/7093124.html
Copyright © 2011-2022 走看看