如题,我发现很多插件都是如下风格的代码
(function ($) {
$.fn.xxxx = ....
})(jQuery);
为什么不直接
$.fn.xxxx = ....
如题,我发现很多插件都是如下风格的代码
(function ($) {
$.fn.xxxx = ....
})(jQuery);
为什么不直接
$.fn.xxxx = ....
(function ($) {
$.fn.xxxx = ....
})(jQuery);
这叫做匿名函数自调用,这样做的好处是避免将变量暴露到全局变量中去。前面说到冲突的问题,在实际的项目中,大部分主要还是jq为主,应该很少碰到jq和其他框架共存的项目,除了prototype也会用到$,其他的框架没使用这个变量。
8 回答4.7k 阅读✓ 已解决
6 回答3.4k 阅读✓ 已解决
5 回答2.8k 阅读✓ 已解决
5 回答6.3k 阅读✓ 已解决
4 回答2.3k 阅读✓ 已解决
4 回答2.8k 阅读✓ 已解决
3 回答2.4k 阅读✓ 已解决
主要原因是你不能保证
$
就是jQuery
对象,因为$
有可能被其他库占用,或被重新定义,或者执行了jQuery.noConfict()
等。但是jQuery
这个对象肯定是存在的。所以保险起见,要加一个匿名的闭包将jQuery
对象作为参数传进去,以确保$ === jQuery
。不光是写插件的时候要这么做,在写其他代码时,也很有必要这样。