为了账号安全,请及时绑定邮箱和手机立即绑定

关于javascript中返回函数的案例

关于javascript中返回函数的案例

慕田峪9158850 2018-10-12 09:10:03
    function foo(){       var a=2;       function bar(){          //dosomething       }       return bar;    }    var baz=foo();    baz();在这段代码中,返回了bar函数本身;如果把return bar更改为alert(bar),就会输出:    function bar(){       //dosomething    }那么是不是可以认为,var baz=foo()等价于:    var baz=function bar(){       //dosomething    }有两个疑问:代码中的return bar,能够返回函数本身么?最后这个等价函数,在形式上不是函数声明,好像也不是函数表达式(函数表达式中的function应该是匿名的)这里该如何理解这种形式呢?还烦请大伙解惑!!补充:a、既然能写成var baz=function bar(){//dosomething},根据这个函数目前所书写的位置,那么现在bar()函数的下一个外包环境,就是全局环境。如果说法成立,那就会和bar在函数foo内部相互矛盾,也就是bar函数脱离了foo函数,出现在了全局环境中;那闭包岂不是不能形成??(闭包的概念:内部函数能够访问外部函数的变或函数。)b、如果说写成var baz=function bar(){//dosomething}后,bar()函数还是存在于foo函数词法作用域的内部,但是根据词法作用域的查找规则,对bar的查找是不会进入foo函数的内部,那就应该无法调用baz();会出现报错;而这里还能调用????
查看完整描述

1 回答

  • 1 回答
  • 0 关注
  • 466 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信