Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript jQuery document.ready vs自调用匿名函数_Javascript_Jquery - Fatal编程技术网

Javascript jQuery document.ready vs自调用匿名函数

Javascript jQuery document.ready vs自调用匿名函数,javascript,jquery,Javascript,Jquery,这两者的区别是什么 $(document).ready(函数(){…}) (函数(){…})() 这两个函数是否同时调用? 我知道,当浏览器呈现整个HTML页面时,document.ready将被触发,但是第二个函数(自调用匿名函数)呢。它是等待浏览器完成呈现页面还是在遇到页面时调用它?document.ready在“构造”DOM后运行。如果在构建DOM之前插入到,则自调用函数会立即运行。(function(){…})()将在Javascript中遇到时立即执行 加载文档后将执行$(docume

这两者的区别是什么

  • $(document).ready(函数(){…})

  • (函数(){…})()

  • 这两个函数是否同时调用?
    我知道,当浏览器呈现整个HTML页面时,document.ready将被触发,但是第二个函数(自调用匿名函数)呢。它是等待浏览器完成呈现页面还是在遇到页面时调用它?

    document.ready在“构造”DOM后运行。如果在构建DOM之前插入到
    ,则自调用函数会立即运行。

    (function(){…})()将在Javascript中遇到时立即执行

    加载文档后将执行
    $(document).ready()
    <代码>$(函数(){…})
    $(document.ready()
    的快捷方式,并执行完全相同的操作。

    • $(document).ready(函数(){…})
      或short
      $(函数(){…})

      DOM准备就绪时调用此函数,这意味着您可以开始查询元素
      .ready()
      将在不同的浏览器上使用不同的方法来确保DOM真正就绪

    • (函数(){…})()

      这只不过是一个函数,在浏览器解释您的
      ecma-/javascript
      时尽快调用自己。因此,您不太可能在这里成功地操作
      DOM元素

  • $(document).ready(函数(){…})
    只是将该函数绑定到文档的
    ready
    事件,因此,正如您所说,当文档加载时,事件将触发

  • (函数($){…})(jQuery)
    实际上是Javascript的一个构造,这段代码所做的就是将
    jQuery
    对象作为参数传递到
    函数($)
    中并运行该函数,因此在该函数中,
    $
    始终指代
    jQuery
    对象。这有助于解决名称空间冲突等问题


  • 因此,加载文档时执行#1,而立即运行#2,并使用名为
    $
    jQuery
    对象作为简写。

    当DOM(文档对象模型)准备好让JavaScript代码执行时,将执行以下代码

    $(document).ready(function(){
      // Write code here
    }); 
    
    上述代码的简称为:

    $(function(){
      // write code here
    });
    
    下面显示的代码是一个自调用的匿名JavaScript函数,将尽快执行 浏览器对其进行解释:

    (function(){
      //write code here
    })();   // It is the parenthesis here that call the function.
    
    下面显示的jQuery自调用函数将全局jQuery对象作为参数传递 到
    函数($)
    。这使得
    $
    可以在自调用函数中本地使用,而无需 遍历定义的全局范围。jQuery不是唯一一个使用
    $
    的库,因此 减少潜在的命名冲突

    (function($){
      //some code
    })(jQuery);
    

    无论如何,
    $(function(){})
    相当于
    $(document).ready(function(){})
    每当遇到自调用匿名函数时,都将执行该函数。另外,在屏幕上实际呈现文档和在内存中创建对象模型是不相关的。相关:在Backbone上使用哪种模式当他们有效地回答问题时,你应该真正接受问题的答案。您的接受率非常低。执行第一个的非jQuery方法是:document.addEventListener('domContentLoaded',function(){…})+1反对不必要的否决票。然而,你的回答中有一个小问题。自调用函数将在解析时发现的任何地方执行,并且不一定必须在
    中,并且在构造初始DOM之后,规则也没有什么不同。@NimChimpsky I fuzzle(function(){});使用$(函数(){})。你是错误的反面;)我对
    (function(){…})()感到困惑没有任何JS代码尽快运行吗?如果你说,在SIAF内部或外部有一个
    alert()
    ,效果不是一样吗?@skube是的,任何JS代码都会在解析器读取后立即运行,但是你可能会混淆SIAF前面是否有“$”。如果是这样,并且这个站点正在使用jQuery,那么这就是jQuery document.ready helper函数的缩写形式,它将安排给定函数在DOM可用时执行。helper函数本身将在读取后立即运行,但您提供给它的函数不会运行。非常简单、清晰、简洁地解释javascript闭包。