• setTimeOut与循环闭包问题


    function a() {
        for(let i=0;i<=5;i++){
            setTimeout(function () {
                console.log(i)
            },i*1000);
        } 
    }
    a();
    

      结果:0 1 2 3 4 5    结果每间隔1S输出

     setTimeOut第二个参数设定xxms后执行,第一的参数是xxms后执行什么动作。

    队列的数据结构特点:

    这个队列的执行时间,需要等到函数调用栈清空后才开始执行,即所有的可执行代码执行完毕后才开始执行由setTimeOut定义的操作,这些操作进入队列的顺序,由设定的延迟时间来决定。

    setTimeout(function () {
        console.log("w");
    },0);
    console.log("q");
    

      结果: q   w  

    匿名函数:

    (function () {
        console.log("w")
    })()
    

      会立刻执行,执行后内存会清空这个函数。

    setTimeout(function () {
        console.log(a);
    },0);
    
    (function () {
        console.log(b+"wwww");
    }) ()//1
    
    var a=20;
    var b=30;
    
    console.log(a);//2
    console.log(fn);//3
    
    (function () {
        console.log(b+"eee");
    }) ()//4
    
    function fn() {
        setTimeout(function () {
            console.log("settime 10")
        },10)
    }
    
    fn.toString=function () {
        return 30;
    }
    
    console.log(fn);//5
    
    setTimeout(function () {
        console.log("settimeout 20ms")
    },20);
    
    fn();
    
    (function () {
        console.log(b+"qqq");
    }) ()//6
    

      

    结果:

    undefinedwwww
    20
    [Function: fn]
    30eee
    { [Function: fn] toString: [Function] }
    30qqq
    20
    settime 10
    settimeout 20ms

    首先执行console.log()的内容,碰到匿名函数会立即执行,之后setTimeOut才会根据设定的时间进入队列,然后再依次执行。

  • 相关阅读:
    八数码
    java swing打包为exe
    java swing 打为exe
    Intellij Idea开发: 手把手教你Java GUI开发,并且打包成可执行Jar程序
    HSSFworkbook,XSSFworkbook,SXSSFworkbook区别总结
    java poi修改EXCEL单元格的内容
    java 操作excel类型转换
    css截取过长文本,省略号显示
    idea swing 设置为utf8乱码
    Java使用POI读取和写入Excel指南
  • 原文地址:https://www.cnblogs.com/lilight/p/7794615.html
Copyright © 2020-2023  润新知