# 作用域
javascript是一种编译型的语言,但它不是提前编译的,Javascript大部分情况下的编译发生在代码执行前的几微秒内。在作用域背后,Javascript引擎用尽了方法(比如JIT,延迟编译甚至实施重编译)来保证性能最佳。
两个重要角色
- 引擎 从头到尾负责整个javascript程序的编译和执行过程。
- 编译器 负责词法分析、语法分析、代码生成等脏活累活。
传统的编译过程分为三个阶段:词法分析、语法分析、代码生成。
var a = 2;
1
引擎认为这里有两个完全不同的声明,一个由编译器在编译时处理,另一个则由引擎在运行时处理。