前言:JavaScript是一种描述型脚本语言,它不同于java或C#等编译性语言,它不需要进行编译成中间语言,而是由浏览器进行动态地解析与执行。代码是无法直接运行的,需要通过JavaScript编译器对其进行编译,只有编译后的代码才可以被识别,然后通过JavaScript引擎执行代码逻辑。
举例:
var a = 2;
一、编译
1.分词:
分词的目的是将这些代码分解为一个个有意义的代码块,这些代码块称为词法单元。
var a = 2; // 将被分解为'var、a、=、2、;'这些词法单元组成了一个词法单元流数组
// 词法分析后的结果
[
"var" : "keyword",
"a" : "identifier",
"=" : "assignment",
"2" : "integer",
";" : "eos" (end of statement)
]
2.解析:
对刚才分词得到的一个个代码块进行解析,生产一个抽象的语法树;
(抽象语法树(Abstract Syntax Tree, AST)把词法单元流数组转换成一个由元素逐级嵌套所组成的代表程序语法结构的树。)
Program body[1]:{ // 代表代码是一个程序
Variable Declaration:{ // 变量