1、代码段
- 一个script标签就是一个代码段
- JS代码在执行时,是一个代码段一个代码段执行
- 代码段彼此独立,上面的代码段报错了,不会影响下面的代码段
- 下面代码段可以使用上面代码段中定义的数据,但上面代码段不能使用下面代码段中定义的数据
JS代码的执行分两个阶段:预解析和执行,预解析结束后,才会进入到执行阶段
2、预解析
预解析期间做了什么?
- 1、提升声明:var声明的变量和function声明的函数会被提升到代码段的最前面。
- 2、变量的提升仅仅是声明,不包括赋值,函数的提升不只提升声明,也提升赋值(函数提升整体)。
- 3、提升的同名变量名和函数名,函数会覆盖变量
- 4、函数内部的局部变量提升到函数体的最前面。
注意:
- 声明后没有赋值输出的是und,没有声明输出时会报错
- 上面报错后下面的代码不会执行,下面报错不会影响上面的输出
- 函数内部没有加var的变量属于全局变量