【JavaScript笔记】JavaScript基础_作用域(6)

这里整理了变量的作用域,全局和函数内。

<!DOCType html>
<html>

<head>
    <meta charset="utf-8">
    <title></title>
    <script type="text/javascript">
        console.log("--------------------变量的作用域--------------------");

        //函数里的变量只适用于函数内部,不会影响全局变量。
        function fun() {
            var a = 10;
        }
        fun();
        //console.log(a); //a is not defined

        //全局变量都是属于window这个类型的属性
        //var a = 10 和 window.a = 10; 是一样的效果

        b = 10; //不写var 声明的变量也等同于 window.b = 10;
        fun();          //两个效果一样;
        window.fun();   //两个效果一样;

        window.aa = 3;
        console.log("aa:", aa); // aa: 3   window.aa = 3;  等同于 aa = 3;

        //不报错的原因是,var声明的变量都在最前头先声明,赋值是跟着程序走。
        console.log("dd:", dd); //dd: undefined  
        var dd = 123;

        fun2(); //fun2
        //这么声明的函数也是和var一样,代码开始之前会被编译。
        function fun2(){
            console.log("fun2");
        }

        //fun3(); //fun3 is not a function, 因为只是声明var  所以等同于 undefinded();
        //但是new出来的函数是不会先编译的
        var fun3 = function(){
            console.log("fun3");
        }

        //函数内的变量是函数外调用不了,function 结束 
        var cc = 10;
        
        function fun4(){
            var ee = 20;
            console.log("cc:", cc); //cc: 10
        }

        fun4(); //cc: 10
        //console.log(ee); // ee is not defined

        //相同的变量名,先用函数内部的再用外部的
        var ff = 10;

        function fun5(){
            var ff = "函数ff";
            console.log("ff:", ff); //ff: 函数ff
        }

        console.log("ff:", ff); //ff: 10

        //函数里想用全局变量 使用 window.变量名
        var gg = 10;

        function fun5(){
            var gg = "函数gg";
            console.log("gg:", window.gg); //gg: 函数gg
        }

        function fun6(){
            console.log("gg:", gg); // gg: undefined   和全局处理很像
            var gg = "函数gg";
        }
        fun6();

        
        var hh = 10;
        function fun7(){
            console.log("hh:", hh); //hh: 10
            var hh = 5;
        }
        fun7();     //hh: undefined


        var hh = 10;
        function fun7(){
            console.log("hh:", hh);
            hh = 5; //全局变量
        }
        fun7();     //hh: 10

    </script>
</head>

<body>
</body>

</html>

欢迎大家的意见和交流

email: li_mingxie@163.com