编译原理:尽管通常将JavaScript归类为“动态”或者“解释执行”语言,但是实际上,它是一门编译性语言。但与传统的编译性语言不同,它不是提前编译的。在传统编译语言的流程中,程序中的一段源代码在执行之前,会经历三个步骤:
(1)分词/词法分析
把由字符串组成的字符分解成有意义的代码块,这些代码块被称为词法单元
(2)解析/语法分析
这个过程是将词法单元流转换为一个由元素逐级嵌套所组成的代表了程序语法结构的树,这个数被称为“抽象语法树”(AST)
(3)代码生成
将AST转换为可执行代码的过程。这个过程与语言、目标平台等息息相关
作用域:作用域是一套规则,用于确定在何处以及如何查找变量(标识符)。在JavaScript中,是从当前作用域向外依次查找。直到找到或者到全局作用域结束。内层同名变量或者属性会对外层变量或属性产生遮蔽作用。如果查找的目的是为了对变量进行赋值,那么就是LHS查询。如果目的是获取变量的值,那么就是RHS查询。
网友评论