JavaScript——函数作用域

1.0函数作用域:
1.JavaScript中没有块级作用域,JavaScript的作用域只有全局作用域,函数作用域,换句话说,JS中只有function能产生局部作用域。
2.JS里的函数作用域又称为词法作用域,所谓词法作用域就是说,这个函数在哪里声明的,他的作用域就是在哪里
3.在script标签中,直接声明的变量,函数,对象都是全局作用域,其本质是给window这个BOM的顶级对象动态添加了一个成员。

<script>
	     var a = 2;
         function A(){
             var a = 3;
             console.log('函数a')
             console.log(a);
             function B(){
                 var a = 4;
                 console.log('函数b')
                 console.log(a);
                 function C(){
                     var a = 5;
                     console.log('函数c')
                     console.log(a);
                 }
                 C();//此时调用函数B,输出的a的值为4,这是因为我们在函数B中 var a = 5;
             }
             B();//此时调用函数B,输出的a的值为4,这是因为我们在函数B中 var a = 4;
         }
         A();//此时调用函数A,输出的a的值为3,这是因为我们在函数A中 var a = 3;,但是我们在声明函数A之前,还声明了 var a = 2;
         //console.log(a);//此时输出的才是在函数A之前声明的 var a = 2;
        
        //以上代码我们都是在函数A,B,C中声明了 var a = 3,4,5,
        function A(){
            // var a = 3;
            console.log('函数a')
            console.log(a);
            function B(){
                var a = 4;
                console.log('函数b')
                console.log(a);
                function C(){
                    //var a = 5;
                    console.log('函数c')
                    console.log(a);
                }
                C();//此时调用函数B,输出的a的值为4,这是因为我们在函数B中 var a = 4;
            }
            B();//此时调用函数B,输出的a的值为4,这是因为我们在函数B中 var a = 4;
        }
        A();//此时调用函数A,输出的a的值为2,这是因为我们在函数A中并未声明 var a ;因此function A()中并未有 a 的值,此时js会向上找a 的值,
    </script>

在这里插入图片描述
当函数C()中没有声明 var a = 5;时,此时console.log(a),输出的就是函数B中定义的 var a = 4,如果B中也没有找打a ,那么就会继续往函数A中找 a 的值,以此类推。

©️2020 CSDN 皮肤主题: 大白 设计师:CSDN官方博客 返回首页