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

最低0.47元/天 解锁文章
436

被折叠的 条评论
为什么被折叠?



