今天从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:感觉函数内部如果需要声明一个函数,还是用函数表达式比较好,不然会让人搞到很怪异-.-