2

I saw this scope encapsulation, with the undefined value as 2nd parameter in the jQUery UI source code https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.button.js .As I'm writing a jquery ui plugin, I'm wondering what is the benefit to set undefined in parameter ?

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

2 回答 2

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 在评论中提到的,这也有助于在使用缩小器时减少代码大小。在这里,局部undefined变量被视为通常的变量,可以将其缩小到例如a可能并因此减少代码大小。

于 2013-05-24T11:58:25.487 回答
1

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

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

于 2013-05-24T11:58:57.563 回答