知识点总结
1、什么是作用域?
作用域是根据名称查找变量的一套规则。
2、通常将JavaScript归类为“动态”或“解释执行”语言,但事实上它是一门编译语言。
3、编译
在传统编译语言的流程中,程序中的一段源代码在执行之前会经历3个步骤,统称为“编译”。
分词/词法分析——>解析/语法分析——>代码生成
4、引擎可以根据需要创建并存储变量。
5、理解作用域
•引擎 从头到尾负责整个JavaScript程序的编译及执行过程
•编译器 负责语法分析及代码生成等
•作用域 负责收集并维护由所有声明的标识符(变量)组成的一系列查询,并实施一套非常严格的规则,确定当前执行的代码对这些标识符的访问权限
注意:变量的赋值操作会执行两个动作,首先编译器会在当前作用域中声明一个变量(如果之前没有声明过),然后在运行时引擎在作用域中查找该变量,如果能够找到就会对它赋值。
6、LHS查询和RHS查询
•当变量出现在赋值操作的左侧时进行LHS查询,出现在右侧时进行RHS查询。
•RHS查询与简单地查找某个变量的值别无二致,而LHS查询则是试图找到变量的容器本身,从而可以对其赋值。
•复制操作的目标是谁(LHS)、谁是赋值操作的源头(RHS)
•如果查询的目的是对变量进行赋值,那么就会使用LHS查询;如果目的是获取变量的值,就会使用RHS查询。