zoukankan      html  css  js  c++  java
  • Javascript的“上下文”(context)

    一:JavaScript中的“上下文“指的是什么
    百科中这样定义:
    上下文是从英文context翻译过来,指的是一种环境。
    在软件工程中,上下文是一种属性的有序序列,它们为驻留在环境内的对象定义环境。
    在对象的激活过程中创建上下文,对象被配置为要求某些自动服务,如同步、事务、实时激活、安全性等等。又比如计算机技术中,相对于进程而言,上下文就是进程执行时的环境。
    具体来说就是各个变量和数据,包括所有的寄存器变量、进程打开的文件、内存信息等。
     

    JavaScript的执行上下文的理解是一种大概模糊的理解(译者)。

    上下文的原意是content,而作用域的原意是scope。
     
    scope指的是 函数被调用的时候, 各个变量的作用区域
    content指的是 函数被调用的时候, 查看this指向哪个object, 那么那个object 就是当前的 "上下文"。
     
    反正我的理解就是:当前执行环境的作用域,因为“上下文”如果离开了执行环境就没有啥实际意义了。
     
    二:JavaScript的两个阶段都干了啥
    (1)预“编译”阶段(一定要注意,这个编译,不是编译成机器码的编译):
              浏览器的JavaScript引擎“解析”JavaScript代码。
              建立arguments对象(隐藏对象,不可见),函数,参数,变量
              建立作用域链
              确定this的值(或者说指向)
     
     (2)代码执行阶段
                浏览器的JavaScript引擎一步步执行代码段,从上至下。
                给变量赋值,确定函数的引用。
     
    三:具体代码分析
    function foo(z){
        var a="Hi";
        var b=function(){
        
        };
        function c(){
            
        }
    }
     
    foo("zqz")
     
    预“编译”阶段:
        z—>undefined
        a—>undefined;
        b—>undefined;
        c—>function (){}
     
    执行阶段:
        z—>"zqz";
        a—>"Hi";
        b—>function (){};
        c—>function c(){}
     
        
    这里面还有个问题:构建执行环境作用域时,arguments对象(隐藏对象,不可见),函数,参数,变量的声明与构建有先后顺序。
    arguments对象(隐藏对象,不可见)—>函数—>参数—>变量
     
    function foo(z){
        console.log(a);
        console.log(b);
    
        var a = 'Hi';
        var b = function() {
    
                };
    
        function a() {
    
        }
        console.log(a);
        console.log(b);
    }
    
    foo("zqz")
    结果:function a(){}    
                undefined    //是变量声明
                Hi
                function b(){}
    按顺序走一遍:arguments—>function a(){}—>z—>var a='Hi';var b=function(){}
     
     
     

    无特殊声明的文章均为原创!

    原创文章如若转载,请注明出处!http://www.cnblogs.com/zqzjs/

    告诫自己即使再累,也不要忘记学习。成功没有捷径可走,只有一步接着一步走下去!

  • 相关阅读:
    人生是马拉松,胜者不一定是跑得最快的
    二.JSP开发过程中遇到的问题及解决
    一.JSP开发的工具下载与环境搭建
    将文件隐藏到图片中的方法与一键合成工具
    VC6兼容性及打开文件崩溃问题解决
    windows10UWP开发真机调试时遇到DEP6100和DEP6200解决办法
    Vs2015 win10虚拟机启动问题:无法设置UDP端口 解决方法 合集(转载)
    10个维修中最常见的蓝屏代码,值得收藏!
    [idea]添加jar包的方法
    [idea]创建一个控制台程序
  • 原文地址:https://www.cnblogs.com/xiaocai0923/p/7504154.html
Copyright © 2011-2022 走看看