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 ajaxsubmit上传图片实现代码
Nov 04 Javascript
js 第二代身份证号码的验证机制代码
May 12 Javascript
在浏览器中获取当前执行的脚本文件名的代码
Jul 19 Javascript
Javascript控制页面链接在新窗口打开具体方法
Aug 16 Javascript
jquery使用append(content)方法注意事项分享
Jan 06 Javascript
javascript计算当月剩余天数(天数计算器)示例代码
Jan 09 Javascript
JavaScript实现弹出模态窗体并接受传值的方法
Feb 12 Javascript
node-http-proxy修改响应结果实例代码
Jun 06 Javascript
全面解析Angular中$Apply()及$Digest()的区别
Aug 04 Javascript
用AngularJS来实现监察表单按钮的禁用效果
Nov 02 Javascript
AngularJS的脏检查深入分析
Apr 22 Javascript
解决vue动态路由异步加载import组件,加载不到module的问题
Jul 26 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中的字符串函数
2006/11/24 PHP
用php的ob_start来生成静态页面的方法分析
2011/03/09 PHP
php自动识别文件编码并转换为UTF-8的方法
2014/06/12 PHP
PHP JSON出错:Cannot use object of type stdClass as array解决方法
2014/08/16 PHP
php注册登录系统简化版
2020/12/28 PHP
Laravel构建即时应用的一种实现方法详解
2017/08/31 PHP
JavaScript初学者应注意的七个细节小结
2012/01/30 Javascript
IE6-8中Date不支持toISOString的修复方法
2014/05/04 Javascript
nodejs教程之制作一个简单的文章发布系统
2014/11/21 NodeJs
jQuery中:first选择器用法实例
2014/12/30 Javascript
JQuery中Text方法用法实例分析
2015/05/18 Javascript
AngularJS入门教程之服务(Service)
2016/07/27 Javascript
Javascript 使用ajax与C#获取文件大小实例详解
2017/01/13 Javascript
AngularJS使用$http配置对象方式与服务端交互方法
2018/08/13 Javascript
微信小程序实现登录遮罩效果
2018/11/01 Javascript
layui实现下拉框三级联动
2019/07/26 Javascript
微信小程序中网络请求缓存的解决方法
2019/12/29 Javascript
微信小程序自定义胶囊样式
2020/12/27 Javascript
[59:32]Liquid vs Fnatic 2019国际邀请赛淘汰赛败者组BO1 8.20.mp4
2020/07/19 DOTA
python迭代器实例简析
2014/09/25 Python
Python数据分析之真实IP请求Pandas详解
2016/11/18 Python
Python实现字符串格式化的方法小结
2017/02/20 Python
Python命令行解析模块详解
2018/02/01 Python
python实现列表中由数值查到索引的方法
2018/06/27 Python
python使用matplotlib绘制雷达图
2019/10/18 Python
Python 面向对象之封装、继承、多态操作实例分析
2019/11/21 Python
Tensorflow 多线程设置方式
2020/02/06 Python
python中pandas库中DataFrame对行和列的操作使用方法示例
2020/06/14 Python
XD健身器材:Kevlar球、Crossfit健身球
2019/03/26 全球购物
阿尔卡特(中国)的面试题目
2014/08/20 面试题
个人简历自我评价范文
2014/02/04 职场文书
体育运动口号
2014/06/09 职场文书
人事经理岗位职责范本
2014/08/04 职场文书
2015年财政所工作总结
2015/04/25 职场文书
常住证明范本
2015/06/23 职场文书
python实现批量移动文件
2021/04/05 Python