第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>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值