为什么将jQuery作为参数传递给(function($){.})(jQuery)闭包包装器,而不是本地变量?
Why pass jQuery as an argument to (function($){..})(jQuery) closure wrapper, instead of local var?
闭包包装器(function($){..})(jQuery);
是使用局部变量而不是全局变量的好方法。$
以及在包装器中定义的任何变量和局部函数仅在包装器内部可见,而在包装器外部不可见。这很好,我一直在用。
(function($){
[..]
})(jQuery);
然而,我一直想知道为什么我们传递jQuery
(可能还有其他东西)作为参数,而不是使用局部变量声明。
(function(){
var $ = jQuery;
[..]
})();
这样做不是也一样好,而且更透明吗?
我看到前一种方式更好的一个原因:
(function(){
var $ = jQuery;
[..]
var jQuery = foo;
})();
在这个例子中,变量"$"将因为提升而未定义。
在代码长度方面有一个优势。它节省了几个字符(字节…)。它不多,但如果你必须在这两个例子中做出选择,第一个例子更短。
为了简化,也可以(在某种程度上是常见的)使用"unset"变量作为未定义匹配,如下所示:
(function(r,u){if(r.missingProp===u)alert('undefined!')})({realProp:1})
由于u
在调用期间没有传递值,因此它将等于undefined
相关文章:
- jQuery变量错误
- HTML 按钮点击函数无法使用 jQuery 变量作为参数
- angularjs:访问angular控制器中的jquery变量
- 使用jquery变量作为.net MVC中ActionLink的参数
- 如何插入js/jquery变量isideHTML标记
- Jquery变量类型问题
- 带有.css()串联问题的jQuery变量
- .validate规则:检查jquery变量
- 检索本身包含变量的 Jquery 变量名的值
- 简单的 Jquery 变量问题
- 使用带有返回的 Jquery 变量的正确语法
- 动态jQuery变量名
- 从jQuery变量中提取数据,增加's left,将剥离的数据放回变量中
- 当chrome检查器为jQuery变量返回[object object]时,如何返回实际数据
- 无法将jQuery变量集成到php中
- jQuery变量$$符号是什么意思
- 如何获取 jquery 变量 childeren
- 对API字符串中的JQuery变量使用split()
- Jquery变量错误
- 使用easyscroll时,jquery变量在url中没有更改