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 相关文章推荐
JS控制显示隐藏兼容问题(IE6、IE7、IE8)
Apr 01 Javascript
使用javascript:将其它类型值转换成布尔类型值的解决方法详解
May 07 Javascript
angularjs学习笔记之双向数据绑定
Sep 26 Javascript
JS实现的N多简单无缝滚动代码(包含图文效果)
Nov 06 Javascript
详解AngularJs中$sce与$sceDelegate上下文转义服务
Sep 21 Javascript
jQuery中绑定事件bind() on() live() one()的异同
Feb 23 Javascript
详解Vue爬坑之vuex初识
Jun 14 Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 jQuery
angular2/ionic2 实现搜索结果中的搜索关键字高亮的示例
Aug 17 Javascript
node.js命令行教程图文详解
May 27 Javascript
laypage.js分页插件使用方法详解
Jul 27 Javascript
如何修改Vue打包后文件的接口地址配置的方法
Apr 22 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
把从SQL中取出的数据转化成XMl格式
2006/10/09 PHP
php 什么是PEAR?
2009/03/19 PHP
php使用正则表达式提取字符串中尖括号、小括号、中括号、大括号中的字符串
2020/04/05 PHP
PHP静态成员变量
2017/02/14 PHP
JS数学函数Exp使用说明
2012/08/09 Javascript
Eclipse去除js(JavaScript)验证错误
2014/02/11 Javascript
通过url查找a元素应用案例
2014/04/29 Javascript
使用AngularJS制作一个简单的RSS阅读器的教程
2015/06/18 Javascript
学做Bootstrap的第一个页面
2016/05/15 HTML / CSS
JS简单实现tab切换效果的多窗口显示功能
2016/09/07 Javascript
JS中如何实现Laravel的route函数详解
2017/02/12 Javascript
基于JQuery和原生JavaScript实现网页定位导航特效
2017/04/03 jQuery
基于vue,vue-router, vuex及addRoutes进行权限控制问题
2018/05/02 Javascript
详解jQuery获取特殊属性的值以及设置内容
2018/11/14 jQuery
利用weixin-java-miniapp生成小程序码并直接返回图片文件流的方法
2019/03/29 Javascript
jQuery zTree插件使用简单教程
2019/08/16 jQuery
python开发之str.format()用法实例分析
2016/02/22 Python
Python序列循环移位的3种方法推荐
2018/04/09 Python
opencv python 图像轮廓/检测轮廓/绘制轮廓的方法
2019/07/03 Python
Django处理Ajax发送的Get请求代码详解
2019/07/29 Python
pytorch 实现cross entropy损失函数计算方式
2020/01/02 Python
使用TensorFlow对图像进行随机旋转的实现示例
2020/01/20 Python
解决python 虚拟环境删除包无法加载的问题
2020/07/13 Python
scrapy-redis分布式爬虫的搭建过程(理论篇)
2020/09/29 Python
详解python第三方库的安装、PyInstaller库、random库
2021/03/03 Python
HTML5 CSS3给网站设计带来出色效果
2009/07/16 HTML / CSS
南威尔士家居商店:Leekes
2016/10/25 全球购物
纽约复古灵感的现代珠宝品牌:Lulu Frost
2018/03/03 全球购物
美国精油公司:Plant Therapy
2019/05/17 全球购物
俄罗斯药房连锁店:ASNA
2020/06/20 全球购物
离婚财产处理协议书
2014/09/30 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
员工家属慰问信
2015/03/24 职场文书
施工员岗位职责范本
2015/04/11 职场文书
读《茶花女》有感:山茶花的盛开与凋零
2020/01/17 职场文书
JavaScript如何优化逻辑判断代码详解
2021/06/08 Javascript