• $(function(){...})

这种写法和jQuery(function(){...}),$(document).ready(function(){...})作用一样,表示文档载入后需要运行的代码。

  • (function($){...})(jQuery)
  1. 原理:

    这实际上是匿名函数,如下:

    function(arg){…}

    这就定义了一个匿名函数,参数为arg

    而调用函数时,是在函数后面写上括号和实参的,由于操作符的优先级,函数本身也需要用括号,即:

    (function(arg){…})(param)

    这就相当于定义了一个参数为arg的匿名函数,并且将param作为参数来调用这个匿名函数

    而(function($){…})(jQuery)则是一样的,之所以只在形参使用$,是为了不与其他库冲突,所以实参用jQuery

    相当于funtion output(s){…};output(jQuery);或者var fn=function(s){…};fn(jQuery);

2.作用

    这种写法的最大好处是形成闭包。在(function($) {…})(jQuery)在内部定义的函数和变量只能在此范围内有效。

    形成是否函数函数、私有变量的概念。比如:

    var i=3;
function init(){
alert("外层init:"+i);
}
(function($) {
var i=2;
function init(){
alert("内层init:"+i);
} init();
})(jQuery);
init();

执行结果:

内层init:2

外层init:3

简单理解是(function($){...})(jQuery)用来定义一些需要预先定义好的函数
$(function(){ })则是用来在DOM加载完成之后运行\执行那些预行定义好的函数.

开发jQuery插件时总结的一些经验分享一下。 
一、先看

jQuery(function(){ 
}); 
全写为 
jQuery(document).ready(function(){

});

意义为在DOM加载完毕后执行了ready()方法。 
二、再看

(function(){

})(jQuery); 
其实际上是执行()(para)匿名方法,只不过是传递了jQuery对象。

三、总结

jQuery(function(){ });用于存放操作DOM对象的代码,执行其中代码时DOM对象已存在。不可用于存放开发插件的代码,因 为jQuery对象没有得到传递,外部通过jQuery.method也调用不了其中的方法(函数)。 
(function(){ })(jQuery);用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码 请小心使用
(function(){ })(jQuery);用于存放开发插件的代码,执行其中代码时DOM不一定存在,所以直接自动执行DOM操作的代码请小心使用。

(function($){...})(jQuery)与$(function(){...})区别的更多相关文章

  1. 浅析jQuery(function(){})与(function(){})(jQuery)之间的区别

    本篇文章主要是对jQuery(function(){})与(function(){})(jQuery)之间的区别进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助 Jquery是优秀的Javas ...

  2. jQuery中$(function(){})与(function($){})(jQuery)的区别

    首先,这两个函数都是在页面载入后执行的函数,其中两者的区别在于: 在jQuery中$(function(){})等同于jQuery(function(){}),另一个写法为jQuery(documen ...

  3. 转:jquery的$(function(){})和$(document).ready(function(){}) 的区别

    原文链接:https://www.cnblogs.com/slyzly/articles/7809935.html [转载]jquery的$(function(){})和$(document).rea ...

  4. window.onload和JQuery中$(function(){})的区别即其实现原理

    一.区别 window.onload必须等到页面内包括图片的所有元素加载完毕后才能执行. 在Jquery中$(function(){ })和$(document).ready(function(){ ...

  5. 使用原生javascript实现jquery的$(function(){ })

    在使用jquery的时候,经常用到$(function(){})方法或者是$(document).read(function(){})来作为页面dom节点加载完成之后javascript的执行入口,现 ...

  6. JavaScript 对象、DOM对象、jquery对象的区别、转换详解

    一.JavaScript 对象 JavaScript 提供多个内建对象,比如 String.Date.Array 等等. 对象只是带有属性和方法的特殊数据类型. 访问对象的属性: [javascrip ...

  7. $(function() {});和$(document).ready(function() {});区别

    第一个是直接使用Jquery调用function,第二个是在文档加载完毕后才去调用function

  8. jQuery.fn和jQuery.prototype jquery.extend() jquery.fn.extend()区别介绍

    这里的 jQuery , jQuery.fn , jQuery,fn,init ,jQuery,prototype 都代表什么. 来看下jQuery的源码是怎么样定义的: (function( win ...

  9. jQuery extend()和jQuery.fn.extend()区别和详解

    1.认识jQuery extend()和jQuery.fn.extend() jQuery的API手册中,extend方法挂载在jQuery和jQuery.fn两个不同对象上方法,但在jQuery内部 ...

随机推荐

  1. grafana二次开发

    grafana官方地址: https://github.com/grafana/grafana 开发文档:http://docs.grafana.org/project/building_from_s ...

  2. 远程线程注入shellcode笔记

    #include "stdafx.h" #include <windows.h> #include <stdio.h> char shellcode[] = ...

  3. IO模型详解

    IO编程包括: 文件读写 操作 StringIO 和 BytesIO 内存中 操作文件和目录 OS 序列化 json pickling 操作系统内核空间(缓冲区)收发数据: 内核态(内核空间)---- ...

  4. thinkphp3.2笔记(1)目录,控制器及url模式,地址解析

    一.目录 Application  :  tp默认的应用代码存储的目录 Public :     Tp 默认的存储静态资源的目录,img,css,js ThinkPHP  :   Tp  框架的源代码 ...

  5. 如何使移动web页面禁止横屏?

    https://segmentfault.com/q/1010000005813183 一般只有移动版有这种需求,我们一般不去禁止,而是比例缩放,css实现,竖屏1rem = 9pt ,横屏1rem ...

  6. Python 使用sys模块

      你已经学习了如何在你的程序中定义一次函数而重用代码.如果你想要在其他程序中重用很多函数,那么你该如何编写程序呢?你可能已经猜到了,答案是使用模块.模块基本上就是一个包含了所有你定义的函数和变量的文 ...

  7. ManualResetEvent(ManualResetEvent : EventWaitHandle : WaitHandle)的三个方法

    ManualResetEvent mre= new ManualResetEvent(false);(ManualResetEvent : EventWaitHandle : WaitHandle) ...

  8. bzoj1093: [ZJOI2007]最大半连通子图 scc缩点+dag上dp

    一个有向图G=(V,E)称为半连通的(Semi-Connected),如果满足:?u,v∈V,满足u→v或v→u,即对于图中任意两点u,v,存在一条u到v的有向路径或者从v到u的有向路径.若G'=(V ...

  9. IOS-H5容器的一些探究:UIWebView和WKWebView的比较和选择

    一.Native开发中为什么需要H5容器 Native开发原生应用是手机操作系统厂商(目前主要是苹果的iOS和google的Android)对外界提供的标准化的开发模式,他们对于native开发提供了 ...

  10. 014——数组(十四)array_reduce array_slice array_splice array_sum

    <?php /** */ //array_reduce()递归的用回调函数递归的对数组元素进行处理,返回处理后的值 /*$arr=array(1,2,3,4,5); function func( ...