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 性能优化指南 (1)
May 21 Javascript
jQuery中bind,live,delegate与one方法的用法及区别解析
Dec 30 Javascript
JS使用replace()方法和正则表达式进行字符串的搜索与替换实例
Apr 10 Javascript
javascipt:filter过滤介绍及使用
Sep 10 Javascript
jquery实现向下滑出的二级导航下滑菜单效果
Aug 25 Javascript
js轮播图无缝滚动效果
Jun 17 Javascript
ZeroClipboard.js使用一个flash复制多个文本框
Jun 19 Javascript
分分钟学会vue中vuex的应用(入门教程)
Sep 14 Javascript
详解vue2.0监听属性的使用心得及搭配计算属性的使用
Jul 18 Javascript
bootstrap table实现iview固定列的效果实例代码详解
Sep 30 Javascript
jQuery实现轮播图源码
Oct 23 jQuery
jQuery鼠标滑过横向时间轴样式(代码详解)
Nov 01 jQuery
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+DBM的同学录程序(3)
2006/10/09 PHP
require(),include(),require_once()和include_once()的异同
2007/01/02 PHP
利用ThinkPHP内置的ThinkAjax实现异步传输技术的实现方法
2011/12/19 PHP
控制PHP的输出:缓存并压缩动态页面
2013/06/11 PHP
PHP简单选择排序算法实例
2015/01/26 PHP
Laravel 自带的Auth验证登录方法
2019/09/30 PHP
用javascript自动显示最后更新时间
2007/03/15 Javascript
img标签中onerror用法
2009/08/13 Javascript
Javascript在IE或Firefox下获取鼠标位置的代码
2009/12/18 Javascript
jQuery.autocomplete 支持中文输入(firefox)修正方法
2011/03/10 Javascript
从数据库读取数据后将其输出成html标签的三种方法
2014/10/13 Javascript
node.js中实现同步操作的3种实现方法
2014/12/05 Javascript
JavaScript学习笔记之Cookie对象
2015/01/22 Javascript
jQuery中animate动画第二次点击事件没反应
2015/05/07 Javascript
JavaScript实现打开链接页面的方式汇总
2016/06/02 Javascript
vue.js实现价格格式化的方法
2017/05/23 Javascript
Vue 2.0学习笔记之使用$refs访问Vue中的DOM
2017/12/19 Javascript
原生js+cookie实现购物车功能的方法分析
2017/12/21 Javascript
如何用input标签和jquery实现多图片的上传和回显功能
2018/05/16 jQuery
使用vue-router切换页面时,获取上一页url以及当前页面url的方法
2019/05/06 Javascript
JS实现横向轮播图(中级版)
2020/01/18 Javascript
[03:17]DOTA2英雄基础教程 剧毒术士
2013/12/12 DOTA
给你选择Python语言实现机器学习算法的三大理由
2017/11/15 Python
Python3实现发送QQ邮件功能(文本)
2017/12/15 Python
Python使用Windows API创建窗口示例【基于win32gui模块】
2018/05/09 Python
python绘制雪景图
2019/12/16 Python
浅析几个CSS3常用功能的写法
2014/06/05 HTML / CSS
Champs Sports加拿大:北美最大的以商场为基础的专业运动鞋和服装零售商之一
2018/05/01 全球购物
亚洲领先的旅游体验市场:Voyagin
2019/11/23 全球购物
武汉东之林科技有限公司机试
2013/09/17 面试题
新闻学专业应届生求职信
2013/11/08 职场文书
学期评语大全
2014/04/30 职场文书
小学师德师风整改措施
2014/10/27 职场文书
行政文员岗位职责
2015/02/04 职场文书
黄河绝恋观后感
2015/06/08 职场文书
收入证明怎么写
2015/06/12 职场文书