zoukankan      html  css  js  c++  java
  • (七)执行上下文和词法作用域&动态作用域案例分析

    概念简析:

    作用域是指程序源代码中定义变量的区域
    执行上下文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();
    
  • 相关阅读:
    查看zookeeper的注册信息
    troubleshooting -zk 报错解决方案
    查看状态信息
    kafka
    查看进程jps的脚本
    大数据项目.
    hadoop支持LZO压缩配置
    linux 增加行号 vim ~/.vimrc
    CDH环境搭建遇到的问题
    hadoops的版本datanode和namenode的版本
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675336.html
Copyright © 2011-2022 走看看