当前位置:  首页>> 技术小册>> JavaScript面试指南

在JavaScript中,执行上下文是代码执行时的环境,它由变量、函数和对象的作用域和生命周期决定。执行栈则是用来存储当前执行上下文的栈结构,每次进入一个新的执行上下文时都会将其推入栈顶,执行结束后再弹出栈顶的执行上下文。

以下是一个示例代码,用于演示执行上下文和执行栈:

  1. function outer() {
  2. var outerVariable = 'outer';
  3. function inner() {
  4. var innerVariable = 'inner';
  5. console.log(innerVariable);
  6. console.log(outerVariable);
  7. }
  8. inner();
  9. }
  10. outer();

在上述代码中,执行上下文包括:

全局执行上下文,它是最先进入执行栈的上下文,它包括全局作用域中的变量、函数和对象。

outer函数的执行上下文,它是由outer函数调用而创建的上下文,包括outer函数中的变量、函数和对象。

inner函数的执行上下文,它是由inner函数调用而创建的上下文,包括inner函数中的变量、函数和对象。

执行栈的状态如下:
+—————————————-+
| inner() 上下文 |
+—————————————-+
| outer() 上下文 |
+—————————————-+
| 全局执行上下文 |
+—————————————-+
当代码开始执行时,全局执行上下文最先进入执行栈。然后,在outer函数被调用时,outer函数的执行上下文被创建并推入执行栈的栈顶。接着,在inner函数被调用时,inner函数的执行上下文被创建并推入执行栈的栈顶。

当inner函数执行完毕时,它的执行上下文从执行栈中弹出。接下来,当outer函数执行完毕时,它的执行上下文也被弹出。最后,全局执行上下文留在执行栈中,程序结束。


该分类下的相关小册推荐: