我刚刚从Syncfusion下载了jQuery Succinctly免费电子书(here)并开始查看示例。
我看到很多这类事情:
<script> (function ($)
{
$('a').mouseenter(
function () { alert(this.id); });
})(jQuery);
</script>
我不确定作者为何使用此语法。 $
对象是否被传递到匿名函数?为什么?匿名函数之后的(jQuery)
是什么?
这只是一种避免与其他图书馆冲突的方法吗?在我看来,这些例子可以写得更“简洁”:)
感谢。
答案 0 :(得分:7)
即使使用$ === jQuery
删除全局jQuery $.noConflict()
,它也会创建一个$
的闭包。
这使您可以始终使用$
,而无需关心用户是否例如还使用了一个框架,例如原型,它也使用$
。
闭包还有一个优点,即你的变量/函数不是全局的,除非你明确地将它们设为全局(通过不使用var
并将函数附加到window
或this
对象)
答案 1 :(得分:4)
是的,这是避免jQuery与其他库冲突的简洁方法。它被称为“封闭”。换句话说,变量$
的范围限定为该函数,可以在其外部使用而不会受到伤害。