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、程序运行完成 全局上下文出栈