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 null和undefined区别分析
Oct 14 Javascript
JavaScript 滚轮事件使用说明
Mar 07 Javascript
基于Jquery的淡入淡出的特效基础练习
Dec 13 Javascript
js里怎么取select标签里的值并修改
Dec 10 Javascript
基于jquery实现的省市区级联无ajax
Sep 24 Javascript
node.js中的console.assert方法使用说明
Dec 10 Javascript
Active控件问题小结(附解决办法)
Jun 09 Javascript
WebSocket+node.js创建即时通信的Web聊天服务器
Aug 08 Javascript
原生js仿jquery实现对Ajax的封装
Oct 04 Javascript
自定义require函数让浏览器按需加载Js文件
Nov 24 Javascript
axios取消请求的实践记录分享
Sep 26 Javascript
详解小程序横屏方案对比
Jun 28 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中读取和写入WORD文档的代码
2008/04/09 PHP
PHP使用strtotime计算两个给定日期之间天数的方法
2015/03/18 PHP
详解PHP的Laravel框架中Eloquent对象关系映射使用
2016/02/26 PHP
PHP实现图片压缩
2020/09/09 PHP
php异常处理捕获错误整理
2019/09/23 PHP
jQuery Ajax文件上传(php)
2009/06/16 Javascript
javascrip客户端验证文件大小及文件类型并重置上传
2011/01/12 Javascript
JavaScript将数据转换成整数的方法
2014/01/04 Javascript
深入理解JavaScript系列(27):设计模式之建造者模式详解
2015/03/03 Javascript
javascript作用域问题实例分析
2015/07/13 Javascript
jQuery蓝色风格滑动导航栏代码分享
2015/08/19 Javascript
理解AngularJs指令
2015/12/10 Javascript
AngularJS实现在ng-Options加上index的解决方法
2016/11/03 Javascript
深入理解Vue父子组件生命周期执行顺序及钩子函数
2018/08/12 Javascript
Node.js系列之安装配置与基本使用(1)
2019/08/30 Javascript
Node.js 中如何收集和解析命令行参数
2021/01/08 Javascript
[36:13]Mineski vs iG 2018国际邀请赛小组赛BO2 第一场 8.16
2018/08/17 DOTA
Python多进程编程技术实例分析
2014/09/16 Python
Python中List.count()方法的使用教程
2015/05/20 Python
python魔法方法-自定义序列详解
2016/07/21 Python
Win7下Python与Tensorflow-CPU版开发环境的安装与配置过程
2018/01/04 Python
python与sqlite3实现解密chrome cookie实例代码
2018/01/20 Python
python实现维吉尼亚算法
2019/03/20 Python
Django中使用 Closure Table 储存无限分级数据
2019/06/06 Python
python 图片去噪的方法示例
2019/07/09 Python
在自动化中用python实现键盘操作的方法详解
2019/07/19 Python
解决python 读取 log日志的编码问题
2019/12/24 Python
pytorch实现seq2seq时对loss进行mask的方式
2020/02/18 Python
Python3.9 beta2版本发布了,看看这7个新的PEP都是什么
2020/06/10 Python
css3截图_动力节点Java学院整理
2017/07/11 HTML / CSS
街头时尚在线:JESSICABUURMAN
2019/06/16 全球购物
会计专业毕业生自我鉴定
2013/10/29 职场文书
乡镇庆八一活动方案
2014/02/02 职场文书
开业典礼主持词
2014/03/21 职场文书
个人工作表现评价材料
2014/09/21 职场文书
Python爬虫基础之爬虫的分类知识总结
2021/05/13 Python