Appearance
全局变量和私有变量
javascript
/*
* 变量提升:
* var a; var b; var c;
* fn = xxx...
*/
var a = 12,
b = 13,
c = 14;
function fn(a) {
/*
* 形参赋值
* a = 12
*
* 变量提升
* var b;
*
* => 在私有作用域中,只有以下两种情况是私有变量
* A:声明过的变量(带VAR/FUNCTION)
* B:形参也是私有变量
*
* 剩下的都不是自己私有的变量,都需要基于作用域链的机制向上查找
*/
console.log(a, b, c); //=>12 undefined 14(C是全局的)
var b = (c = a = 20);
/*
var b=20;
c=20; =>把全局的C修改为20
a=20;
*/
console.log(a, b, c); //=>20*3
}
fn(a); //=> 把FN执行(小括号中是实参:值) =>执行FN把全局变量A的值12当做实参传递给函数的形参 =>fn(12)
console.log(a, b, c); //=>12 13 20
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
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