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

方法一中factory(window)语句的window传值理解不了

(function(window, factory) {
    factory(window)
}(this, function() {
    return function() {
       //jQuery的调用
    }
}))

方法一的factory(window)这句window传值感觉一点作用也没有。 factory函数定义的时候并没有定义形参。

正在回答

2 回答

压缩后可以修改名字把window在压缩后的代码中改为w。还有就是window是顶级作用域,把window当成参数传入后面使用时查找相对快速一点

0 回复 有任何疑惑可以回复我~

虽然factory定义的时候没有形参,但是参数依然被传进来,在arguments对象中,举个例子:

(function(a,b,c){
        c(a,b);            
    }('this','that',function(){       
            console.log(arguments)        
    })
)

看下运行结果:

http://img1.sycdn.imooc.com//57fb216f0001d2ca08380267.jpg

在jQuery的$.Callbacks().fire方法里,有类似的:

fire: function() {
                self.fireWith( this, arguments );
                return this;
            } ,

所以,如果没有写形参的时候,如果传参的话,就被保存在这个arguments对象中。

欢迎提出质疑,一起学习


2 回复 有任何疑惑可以回复我~
#1

1步 提问者

谢谢你的回复,但是我还有个疑问如果想再你的c函数中取到为定义的实参时没有名称,只能通过arguments的下标得到感觉不是特别的方便。
2016-10-11 回复 有任何疑惑可以回复我~
#2

夜晚的一场梦 回复 1步 提问者

适用得的场合不一样,个人觉得比较适合参数可有可无的函数,比如jquery里那个fire()
2016-10-11 回复 有任何疑惑可以回复我~

举报

0/150
提交
取消

方法一中factory(window)语句的window传值理解不了

我要回答 关注问题
意见反馈 帮助中心 APP下载
官方微信