为什么在jQuery函数中使用'undefined'作为第二个参数?

时间:2013-05-24 11:55:07

标签: javascript jquery jquery-ui

我看到了这个范围封装,在jQUery UI源代码https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.button.js中将未定义的值作为第二个参数。当我正在编写一个jquery ui插件时,我想知道设置undefined的好处是什么参数?

(function( $, undefined ) {
//...
}( jQuery);

2 个答案:

答案 0 :(得分:2)

这样做是为了得到一个指向“真实”undefined值的指针。

通常,在JavaScript中,您甚至可以修改undefined下存储的值,从而打破了许多用例。

undefined = 'abc';
var obj = { prop: 'abc' };

if ( obj.prop == undefined ) {
  // do something
  // this is actually called despite the fact, that the property is set!
}

修改

正如@Christoph的评论中所提到的,当使用minifiers时,这也有助于减少代码大小。这里将本地undefined视为通常变量,可以将其缩小为例如a,从而减​​小代码大小。

答案 1 :(得分:1)

它为您的函数创建一个未定义变量的本地副本,指向实际未定义,因此如果有人更改了全局未定义的值,它将不会影响您的代码。

它是如何工作的,因为你没有在自执行函数中传递第二个参数。因此,未定义变量的值实际上是未定义的。