5

我刚刚从 Syncfusion 下载了 jQuery Succinctly 免费电子书(此处)并开始浏览示例。

我看到很多这样的事情:

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

我不确定作者为什么使用这种语法。$对象被传递给匿名函数?为什么?(jQuery)匿名函数的作用是什么 ?

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

谢谢。

4

2 回答 2

7

它创建了一个闭包,$ === jQuery即使$.noConflict()用于删除全局 jQuery $

这使您可以始终使用$而不必关心用户是否也在使用例如原型之类的框架,该框架也使用$.

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

于 2012-05-08T14:59:28.843 回答
4

是的,这是避免 jQuery 与其他库冲突的一种简洁方法。它被称为“关闭”。换句话说,变量$的作用域是该函数,并且可以在它之外使用而不会造成伤害。

于 2012-05-08T14:59:30.360 回答