早年做的一些题

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
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
//例1
function f1(age) {
console.log(age);
var age = 27;
console.log(age);
function age() {
}
console.log(age);
}
f1(3);
// 词法分析:
// 1.AO.age=undefined,AO.age=3
// 2.AO.age=3
// 3.AO.age=function age() {}
// 执行结果:
// function age() {}
// 27
// 27




//例2
function func(age) {
var age;
console.log(age);
var age = 25;
console.log(age);
function age() {
console.log(age);
}
age();
console.log(age);

}
func(18);
// 词法分析
// 1.分析参数AO.age=undefined->AO.age=18
// 2.分析局部变量,如果AO里没有任何属性就添加undefined,否则什么都不做:AO.age=18
// 3.分析声明函数(优先级最高)如果有就覆盖 AO.age=function age() {console.log(age)}
//
// 执行结果:
// AO.age=function age() {console.log(age)}
// 25
// 由于25不是函数,报错,结束




//例3
function func(age) {
var age;
console.log(age);
function age() {
console.log(age);
}
age();
console.log(age);

}
func(18);

// 词法分析:
// 1.AO.age=undefined,AO.age=18
// 2.AO.age=18
// 3.AO.age=function age() {console.log(age);}
// 执行结果:
// function age() {console.log(age);}
// function age() {console.log(age);}
// function age() {console.log(age);}


//例4
function func(age) {
console.log(age);
var age = function age() {
console.log(age);
};
age();
console.log(age);
}
func(18);
// 词法分析:
// 1.AO.age=undefined,AO.age=18
// 2.AO.age=18 这个时候var age是局部变量
// 3.AO.age=18 func里此时没有声明函数
// 执行结果:
// 18
// function age() {console.log(age);};
// function age() {console.log(age);};

// 例5
function t(age) {
var age;
console.log(age);
function age() {
console.log(age);
}
age();
console.log(age);
}
t(5);
// 词法分析:
// 1.AO.age=undefined,AO.age=5
// 2.AO.age=5
// 3.AO.age=function
// 执行结果:
// function
// function
// function

// 例6
function t(age) {
var age;
console.log(age);
age = "99";
console.log(age);
function age() {
console.log(age);
}
age();
console.log(age);
}
t(5);
// 词法分析:
// 1.AO.age=undefined,AO.age=5
// 2.AO.age=5
// 3.AO.age=function
// 执行结果:
// function
// 99
// 报错


//例7
x();
var x = function(){
console.log(1);
};
function x(){
console.log(2);
}
x();
// 词法分析:第一个函数x()在运行的瞬间
// 1.无
// 2.无
// 3.无
// 第二个x()在运行的时候
// x已经是function(){console.log(1);}
// 执行结果:
// 2
// 1

//例8
var i=10;
function a() {
console.log(i);
var i = 2; // 提示:内部定义会隐藏外部变量
console.log(i);
};
a();
// 词法分析:函数a在运行的瞬间
// 1.无
// 2.AO.i=undefined
// 3.无
// 执行结果:
// undefined
// 2