zoukankan      html  css  js  c++  java
  • js 编译原理

    引擎:从头到尾负责整个javaScript 程序的编译过程和执行过程。
    编译器: 负责语法分析以及代码的生成。
    作用域:负责收集并维护由所有声明的标识符(变量)组成的一系列查询, 并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限。
     
    var a =1;
    
    1. 上面的代码首先会经过编译器编译,编译成var a;a = 1;两部分。
    2. 编译器首先会遇到 var a,编译器首先会在作用域中进行查找,如果找到该变量则会忽略改变量,继续往下编译,如果未找到该变量,编译器会在该作用域下声明一个新的变量,并命名为a.
    3. 编译器继续往下执行,遇到a = 1,他会把这个编译成引擎能够运行的代码,这些代码来进行a = 1,这个操作。
    4. 引擎找到编译后的代码,首先会在作用域中查找变量a,如果找到变量a,进行赋值操作,如果没找到,继续往上层作用域进行查找,如果顶层作用域还是没有查找到改变量,引擎会抛出异常。

    编译器将a=1 编译之后,引擎在作用域查找的过程我们称为(RHS),进行赋值的过程叫做(LHS)。我们来看一个例子

    function test(item){
      var b = 0;
     return b;
    }
    test(2)
    1. 首先对test 进行 (RHS)引用
    2. 传了个参数 2 到test函数中,item进行隐性赋值,进行(LHS)引用。
    3. 声明b变量进行(RHS)引用,在进行b=0赋值,(LHS)引用。
    4. 最后return b变量 进行一次(RHS)引用。

      

     
     
     
  • 相关阅读:
    [翻译] JSAnimatedImagesView
    css3 :nth-child 常用用法
    设置屏幕亮度(系统级别和应用级别)
    nodejs 改变全局前缀
    MongoDB数据库和集合的状态信息
    NoSQL架构实践(一)——以NoSQL为辅
    socket.io,系统api,
    svn sc create 命令行创建服务自启动
    background-size background-positon合并的写法
    【转】视频编码与封装方式详解
  • 原文地址:https://www.cnblogs.com/wangziye/p/10033513.html
Copyright © 2011-2022 走看看