当前位置: 首页 > 编程笔记 >

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

黎鹤轩
2023-03-14
本文向大家介绍jQuery中(function($){})(jQuery)详解,包括了jQuery中(function($){})(jQuery)详解的使用技巧和注意事项,需要的朋友参考一下

简单的说

(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的事实,因为他是作为参数被传进去的。

 类似资料:
  • 本文向大家介绍jQuery中$(function() {});问题详解,包括了jQuery中$(function() {});问题详解的使用技巧和注意事项,需要的朋友参考一下 $(document).ready() 里的代码是在页面内容都加载完才执行的,如果把代码直接写到script标签里,当页面加载完这个script标签就会执行里边的代码了,此时如果你标签里执行的代码调用了当前还没加载过来的代码

  • 问题内容: 我刚刚开始编写jQuery插件。我写了三个小插件,但是我只是简单地将该行复制到我的所有插件中,而实际上并不知道这意味着什么。有人可以告诉我更多有关这些的信息吗?也许有一天写一个框架时会有用的解释:) 这是做什么的?(我知道它以某种方式扩展了jQuery,但是对此还有其他有趣的信息) 以下两种编写插件的方式有什么区别: 类型1: 类型2: 类型3: 我可能离这里很远,也许所有的意思都一样

  • 本文向大家介绍jQuery中$.each使用详解,包括了jQuery中$.each使用详解的使用技巧和注意事项,需要的朋友参考一下 通过它,你可以遍历对象、数组的属性值并进行处理。 使用说明 each函数根据参数的类型实现的效果不完全一致: 1、遍历对象(有附加参数) 2、遍历数组(有附件参数) 3、遍历对象(没有附加参数) 4、遍历数组(没有附加参数) 下面提一下jQuery的each方法的几种

  • 本文向大家介绍jQuery中extend函数详解,包括了jQuery中extend函数详解的使用技巧和注意事项,需要的朋友参考一下 在jQuery的API手册中,我们看到,extend实际上是挂载在jQuery和jQuery.fn上的两个不同方法,尽管在jQuery内部jQuery.extend()和jQuery.fn.extend()是用相同的代码实现的,但是它们的功能却不太一样。来看一下 官方

  • 问题内容: 我有一个jQuery Ajax请求,我想用文本输入调用它,因此我将其嵌套在里面。这很好。 但这有时表现为越野车。当我非常快速地输入一些文本时,我得到的输入单词的结果中省略了原始输入单词的最后几个字母(可能是浏览器的某些错误)。我希望在没有输入活动持续一秒钟的情况下发送ajax请求,如果我很快输入文本并休息一秒钟(意味着我进行了输入)。我怎样才能做到这一点? 问题答案: 听起来好像是从先

  • 本文向大家介绍JavaScript中Function详解,包括了JavaScript中Function详解的使用技巧和注意事项,需要的朋友参考一下 关键字function用来定义函数。 注意,function语句里的花括号是必需的,即使函数体只包含一条语句。 在JavaScript中,函数是Function类的具体实例。而且都与其它引用类型一样具有属性和方法。 函数名实际上是指向函数对象的指针,函