javaScript深入-执行上下文

15 阅读1分钟

javaScript是顺序执行的吗?让我们看一段代码

const foo=function(){
    console.log('foo1')
}
foo() //打印foo1


const foo=function(){
    console.log('foo2')
}
foo() //打印foo2

function foo1(){
     console.log('foo3')
}
foo1()//打印 foo4

function foo1(){
     console.log('foo4')
}
foo1()//打印 foo4

为什么会这样的 因为js不是按顺序执行的 是一段一段执行的 有一个上下文栈的概念 一般我们程序都会有很多很多函数构成 函数里面又会嵌套函数 那么怎么管理这些函数呢 就是由上下文栈 先进后出特点 比如下面一个程序 可以解释一下执行过程

function outer(){
    function inner(){
        console.log('inner')
    }
    inner()
}
outer()
  • 1、首先是全局上下文入栈
  • 2、outer()函数被调用 outer函数上下文入栈
  • 3、inner()函数被调用 inner函数上下文入栈
  • 4、inner()函数执行完毕 出栈
  • 5、outer()函数执行完毕 出栈
  • 6、程序运行完成 全局上下文出栈