引擎:从头到尾负责js程序编译以及执行过程
编辑器:负责语法分析以及代码生成
作用域:负责收集维护所有声明的变量
是一套规则,用于管理引擎如何确定在何处以及如何查找变量
实例
如果我们写一段程序
var a =2;
- 编译器询问作用域是否存在变量a
- 有,忽略
- 没有,生成一个叫做a的代码,并生成引擎运行的代码
- 引擎询问作用域,是否存在a变量
- 有,赋值
- 没有,抛出异常(undefined)
- 作用域中的两种查找方法
- LHS
- 查找目的是为了给变量赋值
- 比如var a=2的过程
- RHS
- 查找目的是为了获取变量的值
- 比如console.log(a)的过程
- LHS