只有函数可以制造作用域结构,那么只要是代码.就至少有一个作用域,凡是代码中有函数,那么这个函数就构成另一个作用域.如果函数中还有函数,那么这个函数中就又可以诞生一个作用域.
将这样的所有的作用域列出来,可以有一个结构:函数内指向函数外的链式结构.就称作作用域链.
1 <!DOCTYPE html>
2 <html>
3 <head>
4 <meta charset="utf-8">
5 <title></title>
6 </head>
7 <body>
8 <script>
9 var a=1;
10 function f1(){
11 function f2(){
12 function f3(){
13 console.log(a)
14 }
15 f3();
16 }
17 f2();
18 }
19 f1();
20
21 var a=3;
22 function f1(){
23 var a=6;
24 function f2(){
25 var a=5;
26 function f3(){
27 var a=4;
28 /*当函数中使用给某个变量时,优先在自己的作用域中查找
29 如果找不到就会向上一层作用域查找
30 如果找不到继续往上一层查找,直到全局作用域
31 如果还找不到直接报错
32 这就是→作用域链*/
33 console.log(a)
34 }
35 f3();
36 }
37 f2();
38 }
39 f1();
40
41 /*
42 只有函数可以制造作用域结构,那么只要是代码.就至少有一个作用域,凡是代码中有函数,那么这个函数就构成另一个作用域.如果函数中还有函数,
那么这个函数中就又可以诞生一个作用域.
43 将这样的所有的作用域列出来,可以有一个结构:函数内指向函数外的链式结构.就称作作用域链.
44 */
45 </script>
46 </body>
47 </html>