javascript中的执行上下文
什么是执行上下文?
执行上下文就像一个盒子或容器,在其中执行 javascript 代码。执行上下文由内存组件和代码组件两部分组成。在内存组件中,内存与代码一起分配给所有变量和函数,并且它们作为键值对存储在内存中。内存组件也称为变量环境。在代码组件中,代码一次执行一行。它也被称为执行线程。一旦函数的代码被执行,该函数(被调用)的执行上下文就会从调用堆栈中弹出或删除。我们可能有多个函数,因此会有多个执行上下文,因此为了跟踪执行上下文的顺序,使用了调用堆栈。当一个javascript程序被执行时,然后创建一个全局执行上下文。在调用堆栈的底部,在整个 javascript 代码执行完毕后,全局执行上下文会从调用堆栈中弹出或删除。
让我们考虑一个例子:
let num = 5
function example (a){
let ans = a + a;
return ans;
};
let sum = example(num);
JS引擎做的第一件事就是遍历整个程序并创建一个变量环境(或内存组件)并将变量存储在代码的第一行并为变量’num’分配内存空间。然后它转到下一行并将内存空间分配给函数“example”。同样,它为变量“sum”分配内存空间。
在分配内存时,对于变量“num”和“sum”,它将 undefined 存储在其内存空间中,而对于函数“example”,它将函数的主体作为键值对存储在其内存空间中。
当调用函数时,会创建函数的执行上下文,其中有内存和代码组件。
因此,创建了函数示例执行上下文,并将内存分配给函数的所有变量和参数,如上所示。现在,只要从函数返回值,执行控制就会返回到调用函数的位置,即第 7 行,并且函数示例的执行上下文会从调用堆栈中弹出或删除,如下所示。
并且使用返回的值初始化总和。代码执行完成后,全局执行上下文(或匿名)也会从调用堆栈中删除。
- 点赞
- 收藏
- 关注作者
评论(0)