07 执行栈/调用栈(执行上下文栈)

Posted by CodingWithAlice on April 10, 2021

07 执行栈/调用栈(执行上下文栈)

调用栈定义

在执行上下文创建好后,JavaScript引擎会将执行上下文压入栈中,通常把这种用来管理执行上下文的栈称为执行上下文栈,又称调用栈/执行栈

有三种情况会创建执行上下文

  • js执行 全局代码 时 – 编译全局代码,并创建全局执行上下文
  • 调用一个 函数 时 – 编译函数,并创建函数执行上下文(函数执行结束后,当前函数执行上下文被销毁)
  • eval函数 – 编译并创建执行上下文

调用函数的过程

从全局执行上下文中,取出add函数代码 –>

对代码进行编译,并创建该函数的执行上下文和可执行代码 –>

执行代码,输出结果

image-20210410160131036

执行栈的变化

用代码展示下一段代码执行过程中执行栈的变化

var a = 2;
function add(b,c){
  return b+c;
}
function addAll(b,c){
    var d = 4;
    result = add(b,c);
    return  a + result + d;
}
addAll(6, 3);

image-20210410160232879