栈-数据结构(LIFO-last in first out)

定义

栈——是一种遵循先进后出的有序集合,新添加和待删除的元素都放在栈顶,另一端则为栈底。

函数调用栈

定义

函数调用栈是用来管理函数调用关系的一种数据结构。

例子

  1. var a =2;
  2. function add(b,c){
  3. return b + c;
  4. }
  5. function addAll(b,c){
  6. var result = add(b,c)
  7. return result
  8. }
  9. addAll(3,6);

上述代码,在addAll函数中调用了add函数,下面分析调用栈的过程:
第一步,创建全局执行上下文,并将其压入栈底,执行环境入栈后,js引擎开始执行代码。
第二步,执行到addAll函数时,会创建一个执行上下文,并将执行环境压入栈中,并开始执行函数中的代码
第三步,执行到add函数时,又创建一个执行上下文,并将环境压入栈中,并执行函数中的代码,
第四步,执行函数add中的代码时,执行到return后,就会将add换数的执行环境从调用栈的顶部弹出,并返回