|
|
@ -15,4 +15,33 @@ import v from "mod"; //把模块默认的导出值放入变量v |
|
|
|
|
|
|
|
|
|
|
|
## var 声明的预处理 |
|
|
|
## var 声明的预处理 |
|
|
|
|
|
|
|
|
|
|
|
>var 在预处理阶段,不关心赋值的部分,只管在当前作用域声明这个变量 |
|
|
|
>var 在预处理阶段,不关心赋值的部分,只管在当前作用域声明这个变量 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```javascript |
|
|
|
|
|
|
|
var a = 1; |
|
|
|
|
|
|
|
function foo() { |
|
|
|
|
|
|
|
console.log(a); // undefined |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
// var 会穿透一切语言结构 |
|
|
|
|
|
|
|
if(false) { |
|
|
|
|
|
|
|
var a = 2; |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
foo(); |
|
|
|
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## function 声明 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
>function 声明表现跟 var 相似,不同之处在于,function 声明不但在作用域中加入变量,还会给它赋值。 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
看一个与之不同的例子: |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
```javascript |
|
|
|
|
|
|
|
// foo 会被提升,但不会被赋值 |
|
|
|
|
|
|
|
console.log(foo); // undefined |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if(true) { |
|
|
|
|
|
|
|
function foo(){ } |
|
|
|
|
|
|
|
} |
|
|
|
|
|
|
|
``` |