- 解析阶段分为:词法分析、语法分析
- 运行阶段分为:预解析、运行。
- 词法解析:将代码中的字符串分割为有意义的代码块,这些代码块可称之为词法单元。如var a=6会被分为 var、a、=、1,这些零散的单元会组成一个词法单元流进行解析
- 语法解析:将词法单元流转换成一棵抽象语法树(AST)
- 预解析:在js代码在正式执行之前,会进行一些解析工作。如寻找var声明的变量和function声明的函数,找到后进行提升,但是在变量提升时不会赋值,因此它的默认值是undefined。通过提升,函数可以在声明函数体之上进行调用,变量也可以赋值之前进行输出,知识这时输出的是undefined
- 运行:自上而下执行代码;