美文网首页
执行上下文

执行上下文

作者: bestCindy | 来源:发表于2022-02-22 17:16 被阅读0次

    什么是执行上下文

    执行上下文(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

    相关文章

      网友评论

          本文标题:执行上下文

          本文链接:https://www.haomeiwen.com/subject/cnuglrtx.html