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中getJSON的使用方法
Dec 13 Javascript
最简单的js图片切换效果实现代码
Sep 24 Javascript
JavaScript建立一个语法高亮输入框实现思路
Feb 26 Javascript
node.js中的buffer.copy方法使用说明
Dec 14 Javascript
jQuery实现监控页面所有ajax请求的方法
Dec 10 Javascript
原生js仿淘宝网商品放大镜效果
Feb 28 Javascript
JavaScript之面向对象_动力节点Java学院整理
Jun 29 Javascript
vue实现前进刷新后退不刷新效果
Jan 26 Javascript
微信小程序dom操作的替代思路实例分析
Dec 06 Javascript
JavaScript实现获取两个排序数组的中位数算法示例
Feb 26 Javascript
JavaScript 严格模式(use strict)用法实例分析
Mar 04 Javascript
HTML元素拖拽功能实现的完整实例
Dec 04 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中empty is_null和isset的测试
2013/06/29 PHP
PHP网页游戏学习之Xnova(ogame)源码解读(十二)
2014/06/25 PHP
在openSUSE42.1下编译安装PHP7 的方法
2015/12/24 PHP
javascript两段代码,两个小技巧
2010/02/04 Javascript
javascript实现上传图片并预览的效果实现代码
2011/04/11 Javascript
js中判断数字\字母\中文的正则表达式 (实例)
2012/06/29 Javascript
jQuery 淡入淡出 png图在ie8下有黑色边框的解决方法
2013/03/05 Javascript
html+javascript实现可拖动可提交的弹出层对话框效果
2013/08/05 Javascript
js sort 二维数组排序的用法小结
2014/01/24 Javascript
js对象基础实例分析
2015/01/13 Javascript
Jquery跨浏览器文本复制插件Zero Clipboard的使用方法
2016/02/28 Javascript
jQuery添加options点击事件并传值实例代码
2016/05/18 Javascript
JavaScript requestAnimationFrame动画详解
2017/09/14 Javascript
vue.js 双层嵌套for遍历的方法详解, 类似php foreach()
2018/09/07 Javascript
解决前后端分离 vue+springboot 跨域 session+cookie失效问题
2019/05/13 Javascript
layui table去掉右侧滑动条的实现方法
2019/09/05 Javascript
JS 遍历 json 和 JQuery 遍历json操作完整示例
2019/11/11 jQuery
VUE中使用HTTP库Axios方法详解
2020/02/05 Javascript
[00:17]游戏风云独家报道:DD赛后说出数字秘密 吓死你们啊!
2014/07/13 DOTA
[01:37]PWL S2开团时刻DAY1&2——这符有毒
2020/11/20 DOTA
Python实现自定义顺序、排列写入数据到Excel的方法
2018/04/23 Python
用python中的matplotlib绘制方程图像代码
2019/11/21 Python
pytorch中tensor.expand()和tensor.expand_as()函数详解
2019/12/27 Python
Python连接Mysql进行增删改查的示例代码
2020/08/03 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
ASOS英国官网:英国在线时装和化妆品零售商
2017/05/19 全球购物
祖国在我心中演讲稿
2014/01/15 职场文书
人事科岗位职责范本
2014/03/02 职场文书
英语专业求职信
2014/07/08 职场文书
2014年部门工作总结
2014/11/12 职场文书
2015年前台个人工作总结
2015/04/03 职场文书
驳回起诉裁定书
2015/05/19 职场文书
电力企业职工培训心得体会
2016/01/11 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书
MySQL表锁、行锁、排它锁及共享锁的使用详解
2022/04/02 MySQL
教你使用Python获取QQ音乐某个歌手的歌单
2022/04/03 Python