代码块
JS是以代码块为单位执行的。
特点:
- 独立性:一个代码块发生错误,不影响其他代码块的执行。
- 共享:上一个代码块定义的变量和函数,后面的代码块都可以使用
预编译
1. 最简单的例子
console.log(a); //undefined
var a = 1;
console.log(a); //1
undefined出现情况一般有两种:
-
- 没有明确指定return
-
- 变量没有明确初值
2. js代码执行过程
-
- 预编译(扫描整个代码段,检查是否错误;若无误进行提升操作)
-
- 执行
3. 变量提升
- var变量可以提升,没有var的变量是不会提升的
- 循环变量也可以提升
- 函数内部加var的变量也会提升,提升到了函数内部的最前面
4. 函数提升
- 函数声明也会提升,提升到代码块的最前面
- 函数表达式不会提升,原因函数表达式本质是一个变量