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();
    
  • 相关阅读:
    第八届蓝桥杯JavaB---承压计算
    JAVA Double去掉科学计数"E"
    最小公倍数和最大公约数
    蓝桥杯练习系统错题总结—(二)
    蓝桥杯练习系统错题总结—(一)
    今日总结及近期做题规划
    算法习题--电缆分割问题(二分法)
    jQuery 事件方法
    jQuery学习(一)
    jquery中的$(document).ready()
  • 原文地址:https://www.cnblogs.com/smileyqp/p/12675336.html
Copyright © 2011-2022 走看看