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代码(站点及虚拟目录)
Oct 20 Javascript
js判断滚动条是否已到页面最底部或顶部实例
Nov 20 Javascript
JavaScript修改作用域外变量的方法
Mar 25 Javascript
微信小程序本作用域下调用全局JS详解及实例
Feb 22 Javascript
JavaScript数据结构与算法之队列原理与用法实例详解
Nov 22 Javascript
jQuery简单实现的HTML页面文本框模糊匹配查询功能完整示例
May 09 jQuery
解决bootstrap-select 动态加载数据不显示的问题
Aug 10 Javascript
Vue实现类似Spring官网图片滑动效果方法
Mar 01 Javascript
浅析vue插槽和作用域插槽的理解
Apr 22 Javascript
基于vue-cli搭建多模块且各模块独立打包的项目
Jun 12 Javascript
JavaScript剩余操作符Rest Operator详解
Jul 20 Javascript
原生javascript的ajax请求及后台PHP响应操作示例
Feb 24 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
如何使用jQuery来处理图片坏链具体实现步骤
2013/05/02 Javascript
div拖拽插件——JQ.MoveBox.js(自制JQ插件)
2013/05/17 Javascript
当前页禁止复制粘贴截屏代码小集
2013/07/24 Javascript
三种带箭头提示框总结实例
2016/06/14 Javascript
Vue.js组件tree实现省市多级联动
2016/12/02 Javascript
微信小程序 点击控件后选中其它反选实例详解
2017/02/21 Javascript
Angular组件化管理实现方法分析
2017/03/17 Javascript
JavaScript实现的斑马线表格效果【隔行变色】
2017/09/18 Javascript
Angular4学习之Angular CLI的安装与使用教程
2018/01/04 Javascript
jquery多级树形下拉菜单的实例代码
2019/07/09 jQuery
vue分页插件的使用方法
2019/12/25 Javascript
JS实现简单打字测试
2020/06/24 Javascript
uniapp与webview之间的相互传值的实现
2020/06/29 Javascript
python实现rest请求api示例
2014/04/22 Python
浅析python 中__name__ = '__main__' 的作用
2014/07/05 Python
python开发之基于thread线程搜索本地文件的方法
2015/11/11 Python
python利用dir函数查看类中所有成员函数示例代码
2017/09/08 Python
Python自动化运维之IP地址处理模块详解
2017/12/10 Python
一些Centos Python 生产环境的部署命令(推荐)
2018/05/07 Python
深入理解python中sort()与sorted()的区别
2018/08/29 Python
python程序 创建多线程过程详解
2019/09/23 Python
python根据文本生成词云图代码实例
2019/11/15 Python
python3将变量输入的简单实例
2020/08/19 Python
美国最受欢迎的度假租赁网站:VRBO
2016/08/02 全球购物
New Balance德国官方网站:购买鞋子和服装
2019/08/31 全球购物
PPP协议组成及简述协议协商的基本过程
2015/05/28 面试题
医院护士的求职信范文
2013/12/26 职场文书
庆元旦文艺演出主持词
2014/03/27 职场文书
学生请假条格式
2014/04/11 职场文书
毕业生找工作自荐书
2014/06/30 职场文书
上课不认真检讨书
2014/09/17 职场文书
督导岗位职责范本
2015/04/10 职场文书
2015年数学教师工作总结
2015/05/20 职场文书
傲慢与偏见电影观后感
2015/06/10 职场文书
Python+Selenium实现读取网易邮箱验证码
2022/03/13 Python
vue使用element-ui按需引入
2022/05/20 Vue.js