query插件中(function ( $, window, document, undefined )的作用

在jquery插件中我们经常看到以下这段代码
;(function ( $, window, document, undefined ){
 //函数体内具体代码

 })(jQuery, window,document);


这是javascript的匿名函数,其实就是定义了一个匿名方法,然后再调用它。什么时候可以用这种方式呢?就是当方法须被调用且只会被调用一次的时候。

 
 
( function ($,window,document){})(jquery,window,document)
即时函数,将jquery,window,document传入函数中去
主要传递jquery对象进去。因为函数内部有作用域,所以把代码包在一个即时函数中,防止对全局作用域造成污染。
这三个参数的意思是:
①$  是把jQuery传进来,这样你可以在function中可以继续使用$作为jQuery的引用
②window  把当前的window(窗口)对象传进来
③document 把当前的dom对象传进来,这样你可以操作dom对象。html的所有元素都属于dom对象的范畴

对于很多初学者来说很难明白这表示什么,下边我将为大家介绍其相应的作用。


1、代码最前面的分号,可以防止多个文件压缩合并以为其他文件最后一行语句没加分号,而引起合并后的语法错误。


2、匿名函数(function(){})();:由于Javascript执行表达式是从圆括号里面到外面,所以可以用圆括号强制执行声明的函数。避免函数体内和外部的变量冲突。


3、$实参:$是jquery的简写,很多方法和类库也使用$,这里$接受jQuery对象,也是为了避免$变量冲突,保证插件可以正常运行。


4、window, document实参分别接受window, document对象,window, document对象都是全局环境下的,而在函数体内的window, document其实是局部变量,不是全局的window, document对象。这样做有个好处就是可以提高性能,减少作用域链的查询时间,如果你在函数体内需要多次调用window 或 document对象,这样把window 或 document对象当作参数传进去,这样做是非常有必要的。当然如果你的插件用不到这两个对象,那么就不用传递这两个参数了。


5、最后剩下一个undefined形参了,那么这个形参是干什么用的呢,看起来是有点多余。undefined在老一辈的浏览器是不被支持的,直接使用会报错,js框架要考虑到兼容性,因此增加一个形参undefined
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值