美文网首页
JS函数的执行时机

JS函数的执行时机

作者: 向前进进进 | 来源:发表于2022-08-16 17:59 被阅读0次

    1.为什么如下代码会打印 6 个 6

    setTimeout

    • setTimeout() 方法用于在指定的毫秒数后调用函数或计算表达式,其意思就是尽快
    • 尽快的含义是在结束当前正在进行的事件后立即开始下一个事件
    let i = 0
    for(i = 0; i<6; i++){
      setTimeout(()=>{
        console.log(i)
      },0)
    }
    

    上面代码中

    • setTimeout的调用时间为'0'(尽快调用),只有当主代码执行完一遍后才会执行setTimeout,但这时i已经为6,所以打印出数值6。又因为条件:i<6,共执行了6次,所以结果为一共打印出6次6。

    2.让上面代码打印 0、1、2、3、4、5 的方法

    for循环和let配合

    for(let i = 0; i<6; i++){
      setTimeout(()=>{
        console.log(i)
      },0)
    }
    
    • JS 在 for 和 let 一起用的时候会加东西
    • 每次循环会多创建一个 i
      立即执行函数
    let i 
    for(i = 0; i<6; i++){
      !function(j){
          setTimeout(()=>{
            console.log(j)
          },0)
      }(i)
    }
    

    用setTimeout的第三个参数,将i传进去

    let i
    for (i = 0; i < 6; i++) {
      setTimeout((a) => {
        console.log(a)
      }, 0, i)
    }
    

    用const

    let i
    for(i = 0; i<6; i++){
        const x = i
        setTimeout(()=>{
          console.log(x)
        })
    }
    

    相关文章

      网友评论

          本文标题:JS函数的执行时机

          本文链接:https://www.haomeiwen.com/subject/mrtsgrtx.html