jQuery中(function($){})(jQuery)详解

简单的说

声明了一个匿名函数,也就是将jQuery对象作为参数传给函数

给大家举个例子

// 局部
(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武装到牙齿了,连字符串都缓存,看不出多大效果

和速度应该没关系,我是这么认为的。

jQuery插件众多,你无法确定自己使用的变量或者方法名不于其他插件重名,所以需要将所有插件代码封装到一个匿名函数当中;

由于插件使用了jQuery所以需要导入jQuery到匿名函数中,同时使用$变量引用(因为大家已经习惯了使用$)。当然你在全局下也可以使用$,但是无法完成第一个条件; 封装的代码必须执行,所以要执行匿名函数同时传入jQuery参数。

总结

其实是为了保护$符号,不管外界是否引入了另外有干扰$的库,都不会干扰匿名函数中$就是jQuery的事实,因为他是作为参数被传进去的。

相关文章

jQuery插件的种类 1、封装对象方法 这种插件是将对象方法封装起来,用于对通过选择器获取的jQuery对象进...
扩展jQuery插件和方法的作用是非常强大的,它可以节省大量开发时间。 入门 编写一个jQuery插件开始于给...
最近项目中需要实现3D图片层叠旋转木马切换的效果,于是用到了jquery.roundabout.js。 兼容性如图: ht...
一、什么是deferred对象? 开发网站的过程中,我们经常遇到某些耗时很长的javascript操作。其中,既有异...
AMD 模块 AMD(异步模块定义,Asynchronous Module Definition)格式总体的目标是为现在的开发者提供一...