- javascript与我们知道的java等后台语言一样同样是编译语言,但是与后者不同的是,javascript不是提前编译的,编译结果也不能在分布式系统中移植。
- javascript和传统编译语言非常相似,传统编译语言编译过程分为三步:
-
分词/词法分析
会将字符串分解为有意义的代码块,这些代码块被成为词法单元。
例:var a = 1;
会被分解为 var, a, =, 1, ;
-
解析/语法分析
将词法单元流(数组)转换成一个由元素逐级嵌套所组成的代表程序语法结构的树(抽象语法数 Abstract Syntax Tree ‘AST’)。
例:var a = 2; 大概转换为如下:
- VariableDeclaration // var - Identifier: a - AssignmentExpression // = - NumericLiteral: 2
-
代码生成
将AST转换为可执行的代码,根据语言不同,平台不同,转换成机器可识别的指令。
-
- javascript的编译发生在代码执行前的一瞬间
这里有一个用来演示编译步骤的demo