JavaScript预编译练习题

时间:2019-06-12
本文章向大家介绍JavaScript预编译练习题,主要包括JavaScript预编译练习题使用实例、应用技巧、基本知识点总结和需要注意事项,具有一定的参考价值,需要的朋友可以参考一下。

练习1.

    <script>
        function fun(num){
            console.log(num);
            var num = 5;
            console.log(num);
        }
        fun(10)
        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有略过
        //     全局函数声明:
        //     fun:function;
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         num:10
        //     2.分析变量声明:
        //         num:undefind  然后赋值为5
        //     3.分析函数声明
        //         没有略过    
        // }
        // 最后输出:
        // 第十行输出是10   输出的是参数 num
        // 12行输出为5  输出的是变量num
        </script>

2.

    <script>
        function fun(ger){
            console.log(ger);
            function ger(){
                alert("hello world");
            }
        }
        fun(5)
        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有略过
        //     全局函数声明:
        //     fun:function;
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         ger:5
        //     2.分析变量声明:
        //         没有略过
        //     3.分析函数声明
        //         ger:function;    
        //     重复名称覆盖
        // }
        // 最后输出:function ger(){
            //     alert("hello world");
            // }
    </script>

3.

    <script>
        function fun(ger){
            console.log(ger);
            var ger = function(){//函数表达式
                alert("hello world");
            }
        }
        fun(5)
        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有略过
        //     全局函数声明:
        //     fun:function;
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         ger:5
        //     2.分析变量声明:
        //         没有略过
        //     3.分析函数声明
        //         没有略过
        //     重复名称覆盖
        // }
        // 最后输出:5
    </script>

4.

    <script>
        function a(b){
            console.log(b);
            function b(){
                console.log(b);
            }
            b();
        }
        a(1)
        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有略过
        //     全局函数声明:
        //     a:function;
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         b:1
        //     2.分析变量声明:
        //         没有略过
        //     3.分析函数声明
        //         b:function;    
        //     重复名称覆盖
        // }
        // 最后输出:第十行的时候 输出的是function b的表达式  因为函数声明
        // 在十四行调用函数 function b的时候
        // 第十二行的时候也是函数function b 的表达式
    </script>

5.

    <script>
        function a(b){
            console.log(b);
            var b = function(){//函数表达式
                console.log(b);
            }
            b();
        }
        a(1)
        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有略过
        //     全局函数声明:
        //     fun:function;
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         b:1
        //     2.分析变量声明:
        //         没有略过
        //     3.分析函数声明
        //         没有略过    
        //     重复名称覆盖
        // }
        // 最后输出: 1  function b的函数
    </script>

7.

    <script>
        // 第一题
        function test(a,b){
            console.log(a);
            console.log(b);
            var b = 234;
            console.log(b);
            a = 123;
            console.log(a);
            function a(){};
            var a ;
            b = 234;
            var b = function(){};
            console.log(a);
            console.log(b);
        }
        test(1);
        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有略过
        //     全局函数声明:
        //     test:function
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         a:1
        //     2.分析变量声明:
        //         a:undefind
        //         b:234
        //     3.分析函数声明
        //         没有 忽略
        //     重复名称覆盖
        // }
        // AO={
        //        a:function
        //        b:234
        // }
        // 最后输出:11行:函数a         function a在17行提前声明
        //             12行:undefined       b声明提前   赋值在13行
        //             14行:234;              输出13行赋值过后的b
        //             16:123               在15行赋值a为123  在十六行输出    
        //             21:123                 赋值过后的a
        //             22:function         在二十行b定义为函数表达式
        //             
        //
    </script>

8.

    <script>
        console.log(test);
        function test(test){
            console.log(test);
            var test = 234;
            console.log(test);
            function test(){}
        }
        test(1);
        var test = 123;

        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         test:123;
        //     全局函数声明:
        //     test:function
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         test:1
        //     2.分析变量声明:
        //         test:234
        //     3.分析函数声明
        //         test:funtion
        //     重复名称覆盖
        // }
        // AO={
        //        test:funtion
        // }
        // 最后输出:9行:undefined         全局变量提前声明 但是赋值在17行  错误
        //                 9行 输出的是 function test  先声明的是变量后声明的是函数,函数把变量覆盖了
        //              11行:function test
        //              13  234                   逐行运行后 在12行的时候test被赋值为234     
        </script>

9.

    <script>
        // 第三题
        function test(){
            console.log(b);
            if(a){
                var b = 100;
            }
            c = 234;
            console.log(c);
        }
        var a;
        test();
        a = 10;
        test();
        console.log(c);


        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         a : 123
        //     全局函数声明:
        //     test:function
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         没有忽略
        //     2.分析变量声明:
        //         b:100
        //     3.分析函数声明
        //         没有 忽略
        //     重复名称覆盖
        // }
        // AO={
        //        b:100
        //        c =234
        // }
        // 最后的输出结果:
        //         逐行运行: 在19行调用函数 function test  在第11行 输出 undefined  因为b在13行才声明
        //         16  234 
        //         在21行第二次调用函数 a为非空  b =100 但是先输出b 然后赋值  如果输出是实在if下面就是100 
        //         16  234
        //         22  234
    </script>

10.

    <script>
        // 第四题
        function bar(){
            return foo;
            foo = 10;
            function foo(){};
            var foo = 11;
        }
        console.log(bar());

        //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有忽略
        //     全局函数声明:
        //         bar:function
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         没有忽略
        //     2.分析变量声明:
        //         foo :11
        //     3.分析函数声明
        //         foo:function
        //     重复名称覆盖
        // }
        // AO={
        //        foo:funtion
        // }
        // 最后输出结果:
        //         在16行调用函数
        //         11行 返回值为 function
        //         在14行声明变量 foo并且赋值为11  是在函数 foo里面的 
    </script>

11.

    <script>
            // 第五题
        console.log(bar());
        function bar(){
            foo = 10;
            function foo(){}
            var foo = 11;
            return foo;
        }
    //分析一波
        // 1.分析全局变量GO,生成go对象
        // GO={
        //     全局变量声明:
        //         没有忽略
        //     全局函数声明:
        //         bar:function
        // }
        // 2.逐行执行
        // 3.分析AO,生成AO对象
        // AO={
        //     1.分析参数
        //         没有忽略
        //     2.分析变量声明:
        //         foo :11
        //     3.分析函数声明
        //         foo:function
        //     重复名称覆盖
        // }
        // AO={
        //        foo:funtion
        // }
        // 最后输出结果:
        //         在10行调用函数
        //         声明函数为 foo:function
        //         12 foo被赋值为为10
        //         14行 声明变量并且赋值为11
        //         在14行声明变量 foo并且赋值为11  是在函数 foo里面的
        //         15行 返回值为 11
    </script>

原文地址:https://www.cnblogs.com/wangzheng98/p/11009853.html