jQuery Succinctly语法解释

5
我刚刚从Syncfusion下载了jQuery Succinctly免费电子书(在此),并开始查看示例。
我看到很多这样的内容:
<script> (function ($)
{
    $('a').mouseenter(
        function () { alert(this.id); });
})(jQuery);
</script>

我不确定为什么作者使用这种语法。 匿名函数中传入了 $ 对象? 为什么? 跟在匿名函数后面的(jQuery)是什么意思?
这只是一种避免与其他库冲突的方法吗? 在我看来,这些示例可以写得更加简洁 :)
谢谢。
2个回答

7
它创建一个闭包,在这个闭包里,即使使用 $.noConflict() 移除了全局jQuery $$ === jQuery 仍然成立。
这样,您就可以始终使用 $,而不必关心用户是否还使用像prototype这样的框架也使用了 $
闭包的另一个优点是,除非您明确将它们声明为全局变量(通过不使用 var 并将函数附加到 windowthis 对象),否则您的变量/函数不会成为全局变量。

就比我快几秒钟。 :/ - Elliot Bonneville

4

是的,这是一种避免jQuery与其他库冲突的简洁方法。它被称为“闭包”。换句话说,变量$被限定在该函数范围内,可以在外部无害地使用。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接