文章目录
变量
编程语言中最基础的功能就是 变量
,存储和访问 变量
的能力将 状态
带给了程序。
问题是:变量存储在哪里?更重要的是程序如何找到他们?
说明需要设计一套良好的规则来存储变量,并方便找到他们,这就是 作用域
。
传统编译语言
程序中的一段源代码经过三个步骤,统称 编译
:
- 词法分析:
将每一段代码分解成有意义的代码块
比如var = 1
分解成var
、=
、1
。 - 语法分析
这个过程将词法单元流
转换成一个代表程序语法结构的树,称为抽象语法树
,
比如VariableDeclaration
节点下面包含一个Identifier = var
和AssignmentExpression
节点,
而AssignmentExpression
又包含了NumericLiteral = 1
节点。 - 代码生成
将抽象语法树
转换成可执行代码,这个过程和语言、目标平台
紧密相关。
简单来说就是有某种办法可以让var = 1
的抽象语法树
变成一系列机器指令来执行这个操作。
JavaScript 引擎
- JavaScript 引擎在
语法分析
和代码生成
过程中有特定的步骤对运行性能进行优化。 - JavaScript 引擎没有大量的时间进行优化,编译过程不是发生在构建之前的。
通常JS代码片段在执行前进行编译,进行编译以后就会做好执行他的准备,并马上执行。