本节书摘来自异步社区《jQuery Cookbook中文版》一书中的第1章,第1.17节,作者:【美】jQuery社区专家组著,更多章节内容可以访问云栖社区“异步社区”公众号查看
1.17 在不造成全局冲突的情况下使用$别名
1.17.1 问题
你希望使用快捷方式$别名代替全局命名空间名称(jQuery)的输入,而又不用担心全局冲突。
1.17.2 解决方案
这里提供的解决方案是创建一个匿名的自调用函数,将jQuery对象传递给这个函数,然后将$字符当作指向jQuery对象的一个参数。
例如,所有jQuery代码可以封装在如下的自调用函数中:
(function($){ //用$参数创建私有作用域的函数
//私有作用域和$的使用无须担心冲突
})(jQuery); //调用无名函数并将其传递给jQuery对象
1.17.3 讨论
实际上,这里所做的就是将对jQuery的全局引用传递给一个创建私有作用域的函数。如果没有这么做,而是直接在全局作用域中使用简写的$别名,就必须假定包含在HTML文档中的其他脚本(或者未来包含的脚本)都没有使用$字符,这是有一定风险的。当你能够创建自己的私有作用域时,何必去冒险呢?
这样做的另一个好处是包含在匿名的自调用函数中的代码将运行于自己的私有作用域中。可以确信,在该函数中放置的任何内容都决不会和全局作用域中编写的任何其他JavaScript代码发生冲突。同样,为什么要冒编程冲突的风险?你要做的只不过是创建自己的私有作用域。