js执行顺序

JavaScript014

js执行顺序,第1张

你现在是先定义了函数a,然后定义了函数b,然后再去执行函数a

即使你把代码改成这样依旧能够正常运行

a()

function a() {

    b()

}

function b() {

    console.log(111)

}

因为JS运行环境会把定义的代码(变量/函数)提升到作用域的最前面

在执行过程中,先遇到for循环,for循环先进入线程。当i=1时,循环走到setTimeOut后,此时的for循环还没有执行完成,setTimeOut就会被放入一个地方(线程池)等待执行。此时for循环继续执行,当i=2时,for循环仍没有执行完,这时的setTimeOut仍会被放在线程池中等待执行……依次类推,直到for循环转完3遍后,for循环执行完了,此时线程空闲了,在线程池中等待执行的setTimeOut依次执行打印i,而for循环执行完成后,i变成了4,所以打印出了三个4。