作用域的概念
现代编程语言的最基本功能之一就是能够存储变量当中的值,以便于之后的使用于修改。也正是这个功能将状态带给了程序。
在JavaScript中,作用域就是一套设计良好的规则来存储变量。
简述编译原理
通常我们会将JavaScript归类为“动态”或“解释执行“语言,但它实际上是一门编译语言。与传统的编译语言不同,它不是提前编译的,编译结果也不能在分布式系统中进行移植。
例如V8引擎,为了提高JavaScript代码的运行性能,在运行之前会先将其编译为本地的机器码,然后再去执行机器码,达到提升速度的目的。
-
分词/词法分析
这个过程将由字符组成的代码分解成对程序有意义的代码块,这些代码块被称为词法单元。
例如
var foo = 'bar'
通常会被分解为这些词法单元:var
、foo
、=
、'bar'
-
解析/语法分析
这个过程将词法单元转换成一个“由元素逐级嵌套组成的代表程序语法的树“,这个树被称为“抽象语法树”(AST)。
-
代码生成
将上边的抽象语法树转换为机器可执行代码
JavaScript