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获取隐藏dom的宽高 具体实现
Jul 14 Javascript
jQuery实现用户注册的表单验证示例
Aug 28 Javascript
基于jQuery的网页影音播放器jPlayer的基本使用教程
Mar 08 Javascript
jQuery ui autocomplete选择列表被Bootstrap模态窗遮挡的完美解决方法
Sep 23 Javascript
vue指令以及dom操作详解
Mar 04 Javascript
详解Vue2.0里过滤器容易踩到的坑
Jun 01 Javascript
详解JavaScript调用栈、尾递归和手动优化
Jun 03 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
Oct 11 Javascript
JS实现的倒计时恢复按钮点击功能【可用于协议阅读倒计时】
Apr 19 Javascript
微信小程序实现分享到朋友圈功能
Jul 19 Javascript
vue如何截取字符串
May 06 Javascript
ng-alain的sf如何自定义部件的流程
Jun 12 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
如何给phpcms v9增加类似于phpcms 2008中的关键词表
2013/07/01 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
Yii2中使用join、joinwith多表关联查询
2016/06/30 PHP
PHP中散列密码的安全性分析
2019/07/26 PHP
jquery中radio checked问题
2015/03/16 Javascript
JavaScript中Math.SQRT2属性的使用详解
2015/06/14 Javascript
谈谈jQuery Ajax用法详解
2015/11/27 Javascript
老生常谈JavaScript 函数表达式
2016/09/01 Javascript
jqGrid翻页时数据选中丢失问题的解决办法
2017/02/13 Javascript
JavaScript评论点赞功能的实现方法
2017/03/13 Javascript
vue里面父组件修改子组件样式的方法
2018/02/03 Javascript
Vue表单demo v-model双向绑定问题
2018/06/29 Javascript
JavaScript学习笔记之数组基本操作示例
2019/01/09 Javascript
React实现全选功能
2020/08/25 Javascript
[01:12]DOTA2 2015年秋季互动指南
2015/11/10 DOTA
Python StringIO模块实现在内存缓冲区中读写数据
2015/04/08 Python
python实现多线程行情抓取工具的方法
2018/02/28 Python
Python生成任意范围任意精度的随机数方法
2018/04/09 Python
python通过zabbix api获取主机
2018/09/17 Python
python 限制函数执行时间,自己实现timeout的实例
2019/01/12 Python
Python遍历文件夹 处理json文件的方法
2019/01/22 Python
python实现扫描ip地址的小程序
2019/04/16 Python
Python迭代器协议及for循环工作机制详解
2020/07/14 Python
Python子进程subpocess原理及用法解析
2020/07/16 Python
利用Python将多张图片合成视频的实现
2020/11/23 Python
TUMI马来西亚官方网站:国际领先的高品质商旅箱包品牌
2018/04/26 全球购物
马来西亚太阳镜、眼镜和隐形眼镜网上商店:Focus Point
2018/12/13 全球购物
有原因的手表:Flex Watches
2019/03/23 全球购物
摄影专业毕业生求职信
2014/03/13 职场文书
个人查摆问题整改措施
2014/10/04 职场文书
幼儿园教师自荐书
2015/03/06 职场文书
负责培养人意见
2015/06/05 职场文书
红白喜事主持词
2015/07/06 职场文书
幼儿园小班教育随笔
2015/08/14 职场文书
初中班主任心得体会
2016/01/07 职场文书
nginx之内存池的实现
2022/06/28 Servers