天天看点

你不知道的javascript[1] --- 编译原理

  • javascript与我们知道的java等后台语言一样同样是编译语言,但是与后者不同的是,javascript不是提前编译的,编译结果也不能在分布式系统中移植。
  • javascript和传统编译语言非常相似,传统编译语言编译过程分为三步:
    1. 分词/词法分析

      会将字符串分解为有意义的代码块,这些代码块被成为词法单元。

      例:var a = 1;

      会被分解为 var, a, =, 1, ;

    2. 解析/语法分析

      将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表程序语法结构的树(抽象语法数 Abstract Syntax Tree ‘AST’)。

      例:var a = 2; 大概转换为如下:

      - VariableDeclaration  // var
          - Identifier: a
          - AssignmentExpression  // =
              - NumericLiteral: 2
                 
    3. 代码生成

      将AST转换为可执行的代码,根据语言不同,平台不同,转换成机器可识别的指令。

  • javascript的编译发生在代码执行前的一瞬间

这里有一个用来演示编译步骤的demo

继续阅读