jQuery中(function($){})(jQuery)详解


Posted in Javascript onJuly 15, 2015

简单的说

(function($){
 //code
})(jQuery)

声明了一个匿名函数,也就是将jQuery对象作为参数传给函数

给大家举个例子

// 全局
var str = "全局字符串...";
(function () { // 第1层
  (function () { // 第2层
    (function () { // 第3层
      (function () { // 第4层 层数越多,访问全局越慢
        console.time('全局');
        for (var i=0; i<1e6; i++) {
          str += Math.random().toString().substr(2, 2);
        }
        console.timeEnd('全局');
      })();
    })();
  })();
})();
 
// 局部
(function () { // 第1层
  (function () { // 第2层
    (function () { // 第3层
      (function () { // 第4层
        var str = "内部字符串...";
        var random = Math.random;
        console.time('内部');
        for (var i=0; i<1e6; i++) {
          str += random().toString().substr(2, 2);
        }
        console.timeEnd('内部');
      })();
    })()
  })();
})();

运行代码 就可以看到效果了,比较慢,骚等片刻。
我刚刚测试发现一些内存小的电脑容易直接导致浏览器崩溃、
chrome武装到牙齿了,连字符串都缓存,看不出多大效果、

和速度应该没关系,我是这么认为的。

(function($){
// code
})(jQuery)

jQuery插件众多,你无法确定自己使用的变量或者方法名不于其他插件重名,所以需要将所有插件代码封装到一个匿名函数当中;

由于插件使用了jQuery所以需要导入jQuery到匿名函数中,同时使用$变量引用(因为大家已经习惯了使用$)。当然你在全局下也可以使用$,但是无法完成第一个条件;
封装的代码必须执行,所以要执行匿名函数同时传入jQuery参数。

总结

其实是为了保护$符号,不管外界是否引入了另外有干扰$的库,都不会干扰匿名函数中$就是jQuery的事实,因为他是作为参数被传进去的。

Javascript 相关文章推荐
javascript 函数使用说明
Apr 07 Javascript
一个关于javascript匿名函数的问题分析
Mar 30 Javascript
js动态添加onclick事件可传参数与不传参数
Jul 29 Javascript
javascript解析xml实现省市县三级联动的方法
Jul 25 Javascript
js实现带有介绍的Select列表菜单实例
Aug 18 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
Sep 01 Javascript
深入理解React中es6创建组件this的方法
Aug 29 Javascript
jQuery.uploadify文件上传组件实例讲解
Sep 23 Javascript
js前端日历控件(悬浮、拖拽、自由变形)
Mar 02 Javascript
Node.js中的cluster模块深入解读
Jun 11 Javascript
手把手教你使用TypeScript开发Node.js应用
May 06 Javascript
three.js 如何制作魔方
Jul 31 Javascript
jQuery的事件委托实例分析
Jul 15 #Javascript
jQuery的end()方法使用详解
Jul 15 #Javascript
浅谈$(document)和$(window)的区别
Jul 15 #Javascript
浅谈window对象的scrollBy()方法
Jul 15 #Javascript
jQuery的bind()方法使用详解
Jul 15 #Javascript
纯JavaScript实现的分页插件实例
Jul 14 #Javascript
javascript实现网页字符定位的方法
Jul 14 #Javascript
You might like
PHP彩蛋信息介绍和阻止泄漏的方法(隐藏功能)
2014/08/06 PHP
基于jQuery架构javascript基础体系
2011/01/01 Javascript
关于innerHTML后丢失动态绑定的EVENT问题解决方法
2013/05/19 Javascript
处理及遍历XML文档DOM元素属性及方法整理
2013/08/23 Javascript
javascript event在FF和IE的兼容传参心得(绝对好用)
2014/07/10 Javascript
bootstrap输入框组代码分享
2016/06/07 Javascript
Angularjs 制作购物车功能实例代码
2016/09/14 Javascript
深入理解jquery中extend的实现
2016/12/22 Javascript
浅析node.js的模块加载机制
2018/05/25 Javascript
JavaScript循环遍历你会用哪些之小结篇
2018/09/28 Javascript
jQuery 获取除某指定对象外的其他对象 ( :not() 与.not())
2018/10/10 jQuery
Vue.js组件实现选项卡以及切换特效
2019/07/24 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
VUE渲染后端返回含有script标签的html字符串示例
2019/10/28 Javascript
[08:47]DOTA2每周TOP10 精彩击杀集锦vol.6
2014/06/25 DOTA
[56:57]LGD vs VP 2019DOTA2国际邀请赛淘汰赛 胜者组赛BO3 第一场 8.20.mp4
2019/08/22 DOTA
python简单实现基于SSL的IRC bot实例
2015/06/15 Python
python开发之list操作实例分析
2016/02/22 Python
python3实现字符串操作的实例代码
2019/04/16 Python
实例详解Matlab 与 Python 的区别
2019/04/26 Python
Django中如何使用sass的方法步骤
2019/07/09 Python
numpy:找到指定元素的索引示例
2019/11/26 Python
详解如何解决H5开发使用wx.hideMenuItems无效果不生效
2021/01/20 HTML / CSS
Sephora丝芙兰马来西亚官方网站:国际化妆品购物
2018/03/15 全球购物
娇韵诗法国官网:Clarins法国
2019/01/29 全球购物
全球性的在线鞋类品牌:Public Desire
2019/04/03 全球购物
创立科技Java面试题
2015/11/29 面试题
物流专业大学的自我评价
2014/01/11 职场文书
个人自荐材料
2014/05/23 职场文书
学校学雷锋活动总结
2014/06/26 职场文书
乡镇干部党的群众路线教育实践活动个人对照检查材料
2014/09/24 职场文书
大学生万能检讨书范例
2014/10/04 职场文书
房地产销售员岗位职责
2015/04/11 职场文书
生产现场禁烟通知
2015/04/23 职场文书
Python 批量下载阴阳师网站壁纸
2021/05/19 Python
JS数组方法some、every和find的使用详情
2021/10/05 Javascript