关于js函数内声明函数的一点总结

今天从GitHub Clone了份代码来研究,一开始就遇到了一些阻碍,也是因为思维一下子没有转变过来。代码的整体结构如下:

 (function (o){
    "use strict";
    window["xxx"]=o();
})(function (){     
     "use strict"; 
     function inner(){     
        console.log(123); 
    ....省略一堆对象方法
    }
    ....省略一堆原型方法
    return inner;  
}) ```
inner是作为一个构造函数使用,当要使用的时候直接new xxx()。那么作为一个函数,inner的作用域在哪里呢?刚开始看到这种写法,我是感到很怪异,觉得inner应该是一个全局函数,但是我试着在全局里调用inner,结果报错了,inner未定义。仔细想想,inner函数可以这样写:

var inner=function(){
console.log(123);
}

当然,这两种写法还是有区别的(具体可以查看[Javascript 之函数声明和函数表达式](http://blog.sina.com.cn/s/blog_6e6e7adc01018cu8.html))。这样inner的作用域就是在inner的外层函数里。PS:感觉函数内部如果需要声明一个函数,还是用函数表达式比较好,不然会让人搞到很怪异-.-
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 函数参数的默认值 基本用法 在ES6之前,不能直接为函数的参数指定默认值,只能采用变通的方法。 上面代码检查函数l...
    呼呼哥阅读 8,955评论 0 1
  • 官方中文版原文链接 感谢社区中各位的大力支持,译者再次奉上一点点福利:阿里云产品券,享受所有官网优惠,并抽取幸运大...
    HetfieldJoe阅读 6,789评论 0 21
  • 在js中,函数本身属于对象的一种,因此可以定义、赋值,作为对象的属性或者成为其他函数的参数。函数名只是函数这个对象...
    bjhu电net阅读 3,593评论 0 5
  • 安装时,MySQL会提示输入root用户的口令,请务必记清楚。如果怕记不住,就把口令设置为password。在Wi...
    牛崽儿酷阅读 1,634评论 0 0
  • 天空爱上蓝蓝的海 白云读懂了大地的情怀 风儿你不要总是那么无奈 冬天过后依然是春暖花开 叶子的离开是为了更深沉的爱...
    火红的木棉花阅读 1,648评论 0 3

友情链接更多精彩内容