jquery插件中形参undefined的作用

今天在看jquery的cookie插件时碰到一个疑问,为什么在匿名函数中传入了一个形参undefined,不知道是干嘛用的,于是google找到了答案:

例如常见的插件写法:

1 ;$(function($,document,undefined){
2 
3   //插件实现具体代码
4 
5 })(jQuery,document);

一般在很多jQuery插件中可以看到类似的代码,对上面这段代码做一个简单分析:

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

2. 一个立即执行的匿名函数,可以形成一个独立的执行作用域,可以其他函数体内的局部变量污染全局命名空间。

3. 使用传入实参jQuery给形参$,从而使得在插件代码内部也可以使用$符变量,这样可以避免和其他库的变量命名冲突。

4. 传入document全局变量,可以减少作用域链的查询时间,从而提高执行性能。

5. 至于在匿名函数中定义一个undefined的形参变量,是未来防止在其他函数中undefined被重写,从而引起内部函数执行出错。

因为undefined并不是js关键字,这样它可以作为变量名来使用,比如:

1 function a(){
2   var undefined = 5;
3   alert(undefined)  
4 }
5 a();

运行一下,在IE下,会弹出5,而不是undefined,也就是说全局的undefined有可能被其他函数覆盖的危险。

通过在匿名函数中多定义一个undefined的形参,由于只传入两个实参jquery,document,从而可以保证undefined形参未被赋值,从而最终是我们想要的undefined的值。

 

posted @ 2013-09-05 14:12  嘻哈披头士  阅读(494)  评论(0)    收藏  举报