首页 > 语言 > JavaScript > 正文

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

2024-05-06 16:23:11
字体:
来源:转载
供稿:网友

本文通过具体示例向大家详细介绍了jQuery中的(function($){})(jQuery)的用法和意义,对此有相同困惑的小伙伴可以参考下本文。

简单的说

 

 
  1. (function($){ 
  2. //code 
  3. })(jQuery) 

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

给大家举个例子

 

 
  1. // 全局 
  2. var str = "全局字符串..."
  3. (function () { // 第1层 
  4. (function () { // 第2层 
  5. (function () { // 第3层 
  6. (function () { // 第4层 层数越多,访问全局越慢 
  7. console.time('全局'); 
  8. for (var i=0; i<1e6; i++) { 
  9. str += Math.random().toString().substr(2, 2); 
  10. console.timeEnd('全局'); 
  11. })(); 
  12. })(); 
  13. })(); 
  14. })(); 
  15.  
  16. // 局部 
  17. (function () { // 第1层 
  18. (function () { // 第2层 
  19. (function () { // 第3层 
  20. (function () { // 第4层 
  21. var str = "内部字符串..."
  22. var random = Math.random; 
  23. console.time('内部'); 
  24. for (var i=0; i<1e6; i++) { 
  25. str += random().toString().substr(2, 2); 
  26. console.timeEnd('内部'); 
  27. })(); 
  28. })() 
  29. })(); 
  30. })(); 

运行代码 就可以看到效果了,比较慢,骚等片刻。

我刚刚测试发现一些内存小的电脑容易直接导致浏览器崩溃、

chrome武装到牙齿了,连字符串都缓存,看不出多大效果、

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

 

  
  1. (function($){ 
  2. // code 
  3. })(jQuery) 

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

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

封装的代码必须执行,所以要执行匿名函数同时传入jQuery参数。

总结

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

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表

图片精选