• (七)执行上下文和词法作用域&动态作用域案例分析


    概念简析:

    作用域是指程序源代码中定义变量的区域
    执行上下文JavaScript 引擎创建了执行上下文栈来管进行上下文的执行管理;其工作原理是:当执行一个函数的时候,就会创建一个执行上下文,并且压入执行上下文栈,当函数执行完毕的时候,就会将函数的执行上下文从栈中弹出

    //Ex1:
    var scope = "global scope";
    function checkscope(){
        var scope = "local scope";
        function f(){
            return scope;
        }
        return f();
    }
    checkscope();
    
    //Ex2:
    var scope = "global scope";
    function checkscope(){
        var scope = "local scope";
        function f(){
            return scope;
        }
        return f;
    }
    checkscope()();
    //关于这两个example也可以根据this指向来分析得出其值
    
    关于词法作用域的分析:
    • 两者输出打印都是:local scope。Why?请记住
      • js采用词法(静态)作用域;
      • 词法作用域函数的作用域基于函数创建的位置
        (f()创建的时候在checkscope函数里面;因此变量查找首先是里面的local scope)
    关于执行上下文的分析
    关于Ex1:

    其执行上下文为:

    ECStack.push(<checkscope> functionContext);
    ECStack.push(<f> functionContext);
    ECStack.pop();
    ECStack.pop();
    
    关于Ex2:

    其执行上下文为:

    ECStack.push(<checkscope> functionContext);//执行完返回fn();再创建fn的执行上下文再pop()
    ECStack.pop();
    ECStack.push(<f> functionContext);
    ECStack.pop();
    
  • 相关阅读:
    redis_String
    redis单线程架构
    redis数据结构与内部编码
    常用命令
    Tomcat:web服务器软件
    mysql数据库-备份与还原实操
    mysql数据库-备份方式简介与规范
    mysql数据库-日志管理
    mysql数据库-简介
    在 Kubernetes 集群在线部署 KubeSphere
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675336.html
Copyright © 2020-2023  润新知