/
scope.js
64 lines (44 loc) · 1.07 KB
/
scope.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
var printSpace = require('./printspace');
var showmore = true;
var yoho = "yoho!我在全局作用域";
function awfulSayYoho() {
console.log("*****一般情况*****");
console.log(yoho);
}
function normalSayYoho() {
console.log("*****局部变量*****");
var yoho = "yoho!我在函数作用域";
console.log(yoho);
}
function advanceSayYoho() {
console.log("*****自动提升*****");
// var yoho; 自动提升声明
console.log(yoho);
if (showmore) {
// yoho = "yoho!我在函数sayYoho的作用域"; 执行语句不提升,留在原地
var yoho = "yoho!我在函数作用域";
function sayYohoAgain() {
console.log(yoho);
}
sayYohoAgain();
}
}
printSpace();
awfulSayYoho();
printSpace();
normalSayYoho();
printSpace();
advanceSayYoho();
printSpace();
/**
* 结论:
*
* 1. JavaScript基于词法作用域
*
* 2. JavaScript使用函数作用域,既作用域通过函数隔开
*
* 3. 变量的声明被自动提升
*
* 4. 对于变量的操作并不提升
*
*/