jquerydom就绪和JavaScript执行

jquerydom就绪和JavaScript执行,javascript,jquery,Javascript,Jquery,下面的剪接是如何工作的 $((function () { alert('I''m ready!') }())); 据我所知,它: 执行jQuery.ready()-只有在加载DOM后才会触发它 它被包装成匿名的(如果它被传递给$anyway有什么意义?) 函数被定义并立即执行 这不会创建文档就绪处理程序。根据传递给它的内容执行不同的操作,在本例中,传递的是未定义的 内部匿名函数表达式: (function () { alert('I''m ready!') }()) 立即执行

下面的剪接是如何工作的

$((function () {
    alert('I''m ready!')
}()));
据我所知,它:

  • 执行jQuery.ready()-只有在加载DOM后才会触发它
  • 它被包装成匿名的(如果它被传递给$anyway有什么意义?)
  • 函数被定义并立即执行

  • 这不会创建文档就绪处理程序。根据传递给它的内容执行不同的操作,在本例中,传递的是
    未定义的

    内部匿名函数表达式:

    (function () {
        alert('I''m ready!')
    }())
    
    立即执行,因为它后面有
    ()
    ,然后它的返回值被传递到
    $()
    -它不显式返回任何内容,因此返回值是
    未定义的
    (如上所述)

    如果您确实想在文档准备就绪后发出此警报,请删除
    ()
    ,如下所示:

    $(function () {
        alert('I''m ready!')
    });
    

    这不会创建文档就绪处理程序。根据传递给它的内容执行不同的操作,在本例中,传递的是
    未定义的

    内部匿名函数表达式:

    (function () {
        alert('I''m ready!')
    }())
    
    立即执行,因为它后面有
    ()
    ,然后它的返回值被传递到
    $()
    -它不显式返回任何内容,因此返回值是
    未定义的
    (如上所述)

    如果您确实想在文档准备就绪后发出此警报,请删除
    ()
    ,如下所示:

    $(function () {
        alert('I''m ready!')
    });
    
    下面的剪接是如何工作的

    $((function () {
        alert('I''m ready!')
    }()));
    
    可以说,事实并非如此

    让我们使用一个中间变量来区分代码正在做的两件事:

    // First
    var x = (function () {
        alert('I''m ready!')
    }());
    
    // Then:
    $(x);
    
    第一位定义函数并立即调用它,从而显示
    警报。函数调用的返回值存储在
    x
    中。由于函数不返回任何内容,因此调用它的结果是
    未定义。

    然后,第二位调用jQuery的
    $
    函数传入
    未定义的
    ,该函数基本上不会做任何事情

    你可能是这个意思:

    $(function () {
        alert('I''m ready!')
    });
    
    请注意,在调用它的函数之后没有
    ()
    。这种情况如下:

    // First
    var x = function () {
        alert('I''m ready!')
    };
    
    // Then:
    $(x);
    
    这里发生的是函数被定义而不是被调用;对函数的引用存储在
    x

    然后我们调用
    $
    并传入该函数引用,它是
    $(document.ready(x)
    的快捷方式

    所以这个代码:

    $(function () {
        alert('I''m ready!')
    });
    
    首先定义一个函数(不调用它),然后将对该函数的引用传递到
    $

    稍后,当DOM就绪时,jQuery将调用该函数

    $(function() {
    console.log( "ready!" );
    });
    
    下面的剪接是如何工作的

    $((function () {
        alert('I''m ready!')
    }()));
    
    可以说,事实并非如此

    让我们使用一个中间变量来区分代码正在做的两件事:

    // First
    var x = (function () {
        alert('I''m ready!')
    }());
    
    // Then:
    $(x);
    
    第一位定义函数并立即调用它,从而显示
    警报。函数调用的返回值存储在
    x
    中。由于函数不返回任何内容,因此调用它的结果是
    未定义。

    然后,第二位调用jQuery的
    $
    函数传入
    未定义的
    ,该函数基本上不会做任何事情

    你可能是这个意思:

    $(function () {
        alert('I''m ready!')
    });
    
    请注意,在调用它的函数之后没有
    ()
    。这种情况如下:

    // First
    var x = function () {
        alert('I''m ready!')
    };
    
    // Then:
    $(x);
    
    这里发生的是函数被定义而不是被调用;对函数的引用存储在
    x

    然后我们调用
    $
    并传入该函数引用,它是
    $(document.ready(x)
    的快捷方式

    所以这个代码:

    $(function () {
        alert('I''m ready!')
    });
    
    首先定义一个函数(不调用它),然后将对该函数的引用传递到
    $

    稍后,当DOM就绪时,jQuery将调用该函数

    $(function() {
    console.log( "ready!" );
    });
    
    是的缩写

    $( document ).ready(function() {
    console.log( "ready!" );
    });
    
    看到这个了吗

    是的缩写

    $( document ).ready(function() {
    console.log( "ready!" );
    });
    

    请参阅此

    此处和此处主要记录
    如果在DOM初始化后调用.ready(),则传入的新处理程序将立即执行。
    当我正确获得这3点时?此处和此处主要记录
    如果在DOM初始化后调用.ready(),传入的新处理程序将立即执行。
    当我正确获得这3点时?我认为不应该立即调用。@ZenMaster:正确。不应该有,但是OP的代码中有,这就是nnnnnn指出的。那么在DOM就绪后如何执行匿名函数呢?/nnnnnn的edid回答了这个问题。@undefined好吧,这是当你转到
    $(function(){…})时通常做的事情-您在DOM就绪后执行匿名函数。@ZenMaster是的,当然,我认为他/她想在就绪处理程序中使用自调用函数。我认为不应该立即调用。@ZenMaster:正确。不应该有,但是OP的代码中有,这就是nnnnnn指出的。那么在DOM就绪后如何执行匿名函数呢?/nnnnnn的edid回答了这个问题。@undefined好吧,这是当你转到
    $(function(){…})时通常做的事情-在DOM就绪后执行匿名函数。@ZenMaster是的,当然,我以为他/她想在ready处理程序中使用一个自调用函数。这并没有回答以下问题:OP有
    以下被剪断的部分如何工作?
    另外,如果代码实际上是为了传递IIFE的结果,那么这个答案没有用。这不是答案-1这并没有回答以下问题:OP有
    以下被剪断的部分是如何工作的?
    另外,如果代码实际上是为了传递生命的结果,那么这个答案是没有用的。它不是一个答案-1.