执行上下文

2022-02-22  本文已影响0人  bestCindy

什么是执行上下文

执行上下文(Execution contexts)是指 函数调用 在执行栈中产生的变量对象

执行上下文栈

JavaScript 引擎创建了执行上下文栈(Execution context stack,ESC)来管理执行上下文

我们模拟执行上下文栈是一个数组:ECStack = []

当执行一个函数的时候,就会创建一个执行上下文,并且押入执行上下文栈,当函数执行完毕的时候,就会将函数的执行上下文从栈中弹出

举个例子

function fun3() {
    console.log('fun3');
}

function fun2() {
    fun3();
}

function fun1() {
    fun2();
}

fun1();

我们用伪代码模拟入栈和出栈的行为

ECStack.push(<fun1> functionContext);

ECStack.push(<fun2> functionContext)

ECStack.push(<fun3> functionContext)

// fun3 执行完毕
ECStack.pop();

// fun2 执行完毕
ECStack.pop();

// fun1 执行完毕
ECStack.pop();

作用域 和 上下文

作用域(scope)和上下文(context)是两个不同的概念。每一个函数调用都有一个与之相关的作用域和上下文

作用域是 function-based 而 上下文是 object-based

换句话说,作用域代表了当一个函数被调用时,变量的访问范围,并且对于每次调用时唯一的

上下文的值永远是 this 的值,是对当前拥有当前正在执行的代码的对象的引用

参考>
Understanding Scope and Context in JavaScript

上一篇下一篇

猜你喜欢

热点阅读