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 获取json数据实现代码
Apr 27 Javascript
asp.net HttpHandler实现图片防盗链
Nov 09 Javascript
使用JS取得焦点(focus)元素代码
Mar 22 Javascript
详解javascript中原始数据类型Null和Undefined
Dec 17 Javascript
基于JavaScript实现全屏透明遮罩div层锁屏效果
Jan 26 Javascript
全面了解javascript三元运算符
Jun 27 Javascript
Vue.js实战之组件的进阶
Apr 04 Javascript
JS实现对json对象排序并删除id相同项功能示例
Apr 18 Javascript
Vue加载组件、动态加载组件的几种方式
Aug 31 Javascript
angularJS自定义directive之带参方法传递详解
Oct 09 Javascript
详解使用Nuxt.js快速搭建服务端渲染(SSR)应用
Mar 13 Javascript
js实现坦克大战游戏
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
用sql命令修改数据表中的一个字段为非空(not null)的语句
2010/06/04 PHP
PHP仿盗链代码
2012/06/03 PHP
PHP合并数组的2种方法小结
2016/11/24 PHP
laravel Task Scheduling(任务调度)在windows下的使用详解
2019/10/22 PHP
一些常用的Javascript函数
2006/12/22 Javascript
JavaScript 入门基础知识 想学习js的朋友可以参考下
2009/12/26 Javascript
JS替换字符串中字符即替换全部而不是第一个
2014/06/04 Javascript
js实现在同一窗口浏览图片
2014/09/17 Javascript
手机Web APP如何实现分享多平台功能
2016/08/19 Javascript
微信小程序 欢迎界面开发的实例详解
2016/11/30 Javascript
jquery.zclip轻量级复制失效问题
2017/01/08 Javascript
vue货币过滤器的实现方法
2017/04/01 Javascript
jquery与js实现全选功能的区别
2017/06/11 jQuery
Vue如何从1.0迁移到2.0
2017/10/19 Javascript
微信h5静默和非静默授权获取用户openId的方法和步骤
2020/06/08 Javascript
解决antd datepicker 获取时间默认少8个小时的问题
2020/10/29 Javascript
[02:36]DOTA2英雄基础教程 帕格纳
2014/01/20 DOTA
Python重新引入被覆盖的自带function
2014/07/16 Python
仅用500行Python代码实现一个英文解析器的教程
2015/04/02 Python
Python2.x与Python3.x的区别
2016/01/14 Python
Unicode和Python的中文处理
2017/03/19 Python
Python与R语言的简要对比
2017/11/14 Python
Python 列表的清空方式
2020/01/13 Python
python爬虫智能翻页批量下载文件的实例详解
2021/02/02 Python
一文读懂python Scrapy爬虫框架
2021/02/24 Python
大学生职业生涯规划书
2014/03/14 职场文书
普通话宣传标语
2014/06/26 职场文书
优秀会计求职信
2014/07/04 职场文书
车辆转让协议书
2014/09/24 职场文书
兴趣班停课通知
2015/04/24 职场文书
《唯一的听众》教学反思
2016/02/18 职场文书
好段摘抄大全(48句)
2019/08/08 职场文书
MySQL 如何限制一张表的记录数
2021/09/14 MySQL
Python Pygame实战之塔防游戏的实现
2022/03/17 Python
Python 图片添加美颜效果
2022/04/28 Python
python开发制作好看的时钟效果
2022/05/02 Python