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 相关文章推荐
jQuery 动态酷效果实现总结
Dec 27 Javascript
Exjs 入门篇
Apr 07 Javascript
JavaScript 构造函数 面相对象学习必备知识
Jun 09 Javascript
Javascript 垃圾收集机制介绍理解
May 14 Javascript
JS正则表达式获取分组内容的方法详解
Nov 15 Javascript
javascript实现的平方米、亩、公顷单位换算小程序
Aug 11 Javascript
招聘网站基于jQuery实现自动刷新简历
May 10 Javascript
js+html5实现可在手机上玩的拼图游戏
Jul 17 Javascript
jQuery+ajax的资源回收处理机制分析
Jan 07 Javascript
利用C/C++编写node.js原生模块的方法教程
Jul 07 Javascript
jQuery获取table表中的td标签(实例讲解)
Jul 28 jQuery
解决vue-cli@3.xx安装不成功的问题及搭建ts-vue项目
Feb 09 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页面间传递参数实例代码
2008/06/05 PHP
用PHP来计算某个目录大小的方法
2014/04/01 PHP
Windows下编译PHP5.4和xdebug全记录
2015/04/03 PHP
php使用Jpgraph绘制3D饼状图的方法
2015/06/10 PHP
php in_array() 检查数组中是否存在某个值详解
2016/11/23 PHP
JavaScript prototype对象的属性说明
2010/03/13 Javascript
细说浏览器特性检测(2)-通用事件检测
2010/11/05 Javascript
Jquery上传插件 uploadify v3.1使用说明
2012/06/18 Javascript
编写简单的jQuery提示插件
2014/12/21 Javascript
jQuery+Ajax实现限制查询间隔的方法
2016/06/07 Javascript
Jquery实现遮罩层的简单实例(就是弹出DIV周围都灰色不能操作)
2016/07/14 Javascript
微信小程序movable view移动图片和双指缩放实例代码
2017/08/08 Javascript
Canvas放置反弹效果随机图形(实例)
2017/08/17 Javascript
使用socket.io制做简易WEB聊天室
2018/01/02 Javascript
node.js连接mysql与基本用法示例
2019/01/05 Javascript
js实现时间日期校验
2020/05/26 Javascript
浅谈vue中使用编辑器vue-quill-editor踩过的坑
2020/08/03 Javascript
Openlayers实现点闪烁扩散效果
2020/09/24 Javascript
微信小程序基于高德地图API实现天气组件(动态效果)
2020/10/22 Javascript
解决nuxt 自定义全局方法,全局属性,全局变量的问题
2020/11/05 Javascript
JavaScript 防抖和节流遇见的奇怪问题及解决
2020/11/20 Javascript
[01:10:30]DOTA2-DPC中国联赛正赛 Dragon vs Dynasty BO3 第一场 3月4日
2021/03/11 DOTA
使用Python脚本对Linux服务器进行监控的教程
2015/04/02 Python
python最长回文串算法
2018/06/04 Python
用Python写一个自动木马程序
2019/09/17 Python
python中的RSA加密与解密实例解析
2019/11/18 Python
python文件绝对路径写法介绍(windows)
2019/12/25 Python
python 使用OpenCV进行简单的人像分割与合成
2021/02/02 Python
美国最值得信赖的宠物药房:Allivet
2019/03/23 全球购物
Nayomi官网:沙特阿拉伯王国睡衣和内衣品牌
2020/12/19 全球购物
交通事故协议书范文
2014/04/16 职场文书
项目建议书怎么写
2014/05/15 职场文书
消防安全承诺书
2014/05/22 职场文书
五一促销活动总结
2014/07/01 职场文书
上下班时间调整通知
2015/04/23 职场文书
民事申诉状范本
2015/05/20 职场文书