预解析:
- 在所有代码开始执行之前,对代码进行通读并解释,解释完毕以后再开始执行代码
- 函数调用问题
- 在函数定义的时候,被装进“盒子”内的代码是不执行的
- 在函数调用的时候,代码才会执行
- 预解析有两部分
- 全局预解析:打开页面的时候,回怼全局代码进行预解析,但是函数体内的代码不管
- 局部预解析:当函数调用的时候,会在函数的私有作用域内进行预解析,解析完毕执行函数 体内的代码
预解析解释哪些内容:
- var
- 向浏览器内存声明有一个变量被定义了,但是还没有赋值
- 赋值操作是在代码执行阶段才会执行的
=> 当时使用一个变量的时候
- 如果报错:xxx is not defined,说明这个变量没有定义
- 如果出现 undefined 说明这个变量定义过,但是没有赋值
- 声明式函数
- 声明式函数会进行预解析
- 当代码发现声明式函数的时候会在浏览器内存中声明 变量名(函数名),并且被赋值为一个函数
- 赋值式函数(函数表达式)
- 按照 var 的规则执行
预解析的重名问题
- 当代码中 函数名 和 变量名 重名的时候,以函数为准,仅仅只是在预解析中
- 不要把函数名和变量名重名