一、预解析
1、概述
JavaScript 代码的执行是由浏览器中的 JavaScript 解析器来执行的。
JavaScript 解析器执行 JavaScript 代码的时候,分为两个过程:预解析过程和代码执行过程。
2、过程
-
- 把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
- 把函数的声明提升到当前作用域的最前面,只会提升声明,不会提升调用。
- 先后规则:先提升 var,在提升function
- 把变量的声明提升到当前作用域的最前面,只会提升声明,不会提升赋值。
二、解析规则
1、全局解析与函数内部解析规则一致
-
- 变量提升:定义变量的时候,变量的声明会被提升到作用域的最上面,变量的赋值不会提升。
- 函数提升:JavaScript 解析器首先会把当前作用域的函数声明提前到整个作用域的最前面