我看到了这个范围封装,在jQUery UI源代码https://github.com/jquery/jquery-ui/blob/master/ui/jquery.ui.button.js中将未定义的值作为第二个参数。当我正在编写一个jquery ui插件时,我想知道设置undefined的好处是什么参数?
(function( $, undefined ) {
//...
}( jQuery);
答案 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)
它为您的函数创建一个未定义变量的本地副本,指向实际未定义,因此如果有人更改了全局未定义的值,它将不会影响您的代码。
它是如何工作的,因为你没有在自执行函数中传递第二个参数。因此,未定义变量的值实际上是未定义的。