javascript - 为何很多jquery插件都要这么写
巴扎黑
巴扎黑 2017-04-10 14:43:00
[JavaScript讨论组]

如题,我发现很多插件都是如下风格的代码

(function ($) {
    $.fn.xxxx = ....
})(jQuery);

为什么不直接

$.fn.xxxx = ....
巴扎黑
巴扎黑

全部回复(3)
黄舟

主要原因是你不能保证$就是jQuery对象,因为$有可能被其他库占用,或被重新定义,或者执行了jQuery.noConfict()等。但是jQuery这个对象肯定是存在的。所以保险起见,要加一个匿名的闭包将jQuery对象作为参数传进去,以确保$ === jQuery

不光是写插件的时候要这么做,在写其他代码时,也很有必要这样。

PHPz

(function ($) {
$.fn.xxxx = ....
})(jQuery);
这叫做匿名函数自调用,这样做的好处是避免将变量暴露到全局变量中去。前面说到冲突的问题,在实际的项目中,大部分主要还是jq为主,应该很少碰到jq和其他框架共存的项目,除了prototype也会用到$,其他的框架没使用这个变量。

怪我咯

更高大上,

(function ($) {
$.fn.xxxx = ....
})(jQuery);

这种写法$不会与别的框架冲突,
后面写法会和其他框架中的$冲突。

热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板
关于我们 免责申明 意见反馈 讲师合作 广告合作 最新更新
php中文网:公益在线php培训,帮助PHP学习者快速成长!
关注服务号 技术交流群
PHP中文网订阅号
每天精选资源文章推送
PHP中文网APP
随时随地碎片化学习
PHP中文网抖音号
发现有趣的

Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号