美文网首页
JS执行时机情况分析

JS执行时机情况分析

作者: 郑馋师 | 来源:发表于2019-10-08 20:10 被阅读0次

eg1:为什么如下代码会打印 6 个 6

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

因为setTimeout的意思是过一会执行,当for循环6次后,时间到了,i已经变成6了,循环打印的次数一共又有6次,所以这段代码会打印出6个6
eg2.为什么此时是打印出 0、1、2、3、4、5

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

因为js要兼顾新手的脑瘫思维,所以特地照顾他们出了这样的逻辑
eg3.除了使用 for let 配合,还有什么其他方法可以打印出 0、1、2、3、4、5

for(var i=0;i<6;i++){
    setTimeout(function(){console.log(i)}(),0)
}

通过闭包和立即执行函数的的方式实现,通过这种方式每次循环的i也是不同的

相关文章

  • JS执行时机情况分析

    eg1:为什么如下代码会打印 6 个 6 因为setTimeout的意思是过一会执行,当for循环6次后,时间到了...

  • 2020-11-07

    JS 函数的执行时机 函数的执行时机不同结果也会不同,js也分为同步执行和异步执行 简单的举几个同步执行例子1、 ...

  • JS函数的执行时机

    JS函数的执行时机 在解释JS函数的执行时机之前,先来看一个例子 将console.log打印出来是什么呢?答案是...

  • Scope & Closures

    JS 也是编译型语言,并不是边解释边执行的。 编译的时机是代码即将执行之前。 Hoisting 编译时 JS 会把...

  • js中的定时机制与函数节流

    js中常用setTimeout()和setInterval()创建定时器,实现延迟或定时执行。 定时机制 js是运...

  • JS的执行时机

    以下代码输出结果以及原因 首先在for循环之前let i定义了变量i,setTimeout(code,millis...

  • JS函数执行时机

    请问下面这段代码会打印什么结果 打印出6 个6解析:因为i作用域,不属于 for 循环体,属于 global;等到...

  • JS预编译精解

    JS运行分三个步骤: 语法分析 预编译 解释执行 通常js在执行代码前,系统会先执行语法分析,通篇扫描一遍看是否有...

  • js事件轮询机制

    这段代码的执行顺序,根据执行顺序分析、JS事件轮询原理 执行逻辑 从代码执行角度来看 首先分析同步代码、在面的代码...

  • 变量提升

    js 代码执行过程分为两个阶段 词法分析:词法分析主要包括:分析变量声明、分析函数声明、分析形参三个部分。执行阶段...

网友评论

      本文标题:JS执行时机情况分析

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