jQuery简洁的语法解释

时间:2012-05-08 14:57:36

标签: jquery syntax

我刚刚从Syncfusion下载了jQuery Succinctly免费电子书(here)并开始查看示例。

我看到很多这类事情:

<script> (function ($)
{
    $('a').mouseenter(
        function () { alert(this.id); });
})(jQuery);
</script>

我不确定作者为何使用此语法。 $对象是否被传递到匿名函数?为什么?匿名函数之后的(jQuery)是什么?

这只是一种避免与其他图书馆冲突的方法吗?在我看来,这些例子可以写得更“简洁”:)

感谢。

2 个答案:

答案 0 :(得分:7)

即使使用$ === jQuery删除全局jQuery $.noConflict(),它也会创建一个$的闭包。

这使您可以始终使用$,而无需关心用户是否例如还使用了一个框架,例如原型,它也使用$

闭包还有一个优点,即你的变量/函数不是全局的,除非你明确地将它们设为全局(通过不使用var并将函数附加到windowthis对象)

答案 1 :(得分:4)

是的,这是避免jQuery与其他库冲突的简洁方法。它被称为“封闭”。换句话说,变量$的范围限定为该函数,可以在其外部使用而不会受到伤害。