第4周 JS作业问题

1、return 方法() = 调用方法
2、return 方法名 = 返回函数对象引用(函数定义的内容)

<script>
    /*
    * 1、return 方法() = 调用方法
    *
    * 2、return 方法名  = 返回函数对象引用(函数定义的内容)
    * */
    
    
    //1、return 方法() = 调用方法
    function f() {

        function aa() {
            document.write("aa")
        }
        function dd(){
            document.write("bb")
            aa();

        }
        return dd();
    }
    f();


    // 2、return 方法名  = 返回函数对象引用(函数定义的内容)
    function f() {

        function aa() {
            document.write("aa")
        }
        function dd(){
            document.write("bb")
            aa();

        }
        return dd;
    }
       var fun= f();
       fun();







</script>

3、要点:function是对象,全局变量与局部变量的用法

<script language="JavaScript">
        var a = 1;
        function fn1(){
            function fn2(){
                document.write(a)
            }

            function fn3(){
                var a = 4;
                fn2();
            }

            var a = 5;
            return fn3;

        }
        fn1();//调用fn1返回fn3函数,但函数fn3没有被调用
        var fn = fn1();//相当于把fn3定义的函数传给fn
         fn();//执行fn,等于执行fn3
        /*
        要点:function是对象,全局变量与局部变量的用法
       解析:
        var fn = fn1()中fn1()最先被调用,但是fn1()是有返回值的,它返回的是fn3函数对象的引用
        所以,fn()实际上是调用了fn3,fn3函数里再调用fn2,fn2再alter变量a
        那么为什么变量a是局部变量的5,而不是局部变量4,也不是全局变量的1?
        1)就近原则,谁哪个变量离我最近,我就用谁!(排除1)
        2)局部变量4 不在fn2的作用域 (排除4)
         */


    </script>
发布了65 篇原创文章 · 获赞 1 · 访问量 1470

猜你喜欢

转载自blog.csdn.net/weixin_45097731/article/details/104770775