回答

2
$(function() { 
    // bind some event listeners 
}); 

在上面的例子中,函數被傳遞給jquery,一旦文檔準備好就會被執行。

$(function() { 
    // bind some event listeners 
}()); 

在上述情況下,函數的返回值傳遞給jquery。 由於函數是se3lf執行自己,它會立即執行,無論函數返回將傳遞給jquery,所以這不是一個好方法,因爲目標是執行函數,一旦文檔準備就緒,這是不是發生在這種情況下

1
$(function(){...}); OR $(document).ready(function(){ ... }); 

此功能之間的差異被稱爲當DOM準備就緒,這意味着,你可以開始例如查詢元素。 .ready()將在不同的瀏覽器上使用不同的方式來確保DOM真的準備就緒。

(function(){ ... })(); 

這不是別的,一旦調用自身的可能時,瀏覽器解釋你的JavaScript功能。因此,您不可能在這裏成功地處理DOM元素。

$(document).ready(function(){ 
    // Write code here 
}); 

$(function() { 
    // bind some event listeners 
}()); 

這一個是相同的,但在函數內部的$()是:

1
$(function() { 
    // bind some event listeners 
}); 

只有當DOM滿載,它的快捷方式,這將是一個執行自我調用功能。通常目標是防止變量名稱衝突,因爲它創建了一個新的範圍。

1
$(function() { ... }); 

只是jQuery的短手爲:

$(document).ready(function() { ... }); 

立即調用的函數表達式(或IIFE),相反,是表達 「立即執行」,慣例是在括號中以封閉,但每一種表情,立即執行,請參閱以下IIFE功能:

(function() { 
 
    console.log("IIFE 1"); 
 
}()); 
 

 
+function() { 
 
    console.log("IIFE 2"); 
 
}(); 
 

 
1-function() { 
 
    console.log("IIFE 3"); 
 
}(); 
 

 
var f = 50 * function() { 
 
    console.log("IIFE 4"); 
 
}();

我希望很清楚,再見。