$(function() {
// bind some event listeners
});
和
$(function() {
// bind some event listeners
}());
$(function() {
// bind some event listeners
});
和
$(function() {
// bind some event listeners
}());
$(function() {
// bind some event listeners
});
在上面的例子中,函數被傳遞給jquery,一旦文檔準備好就會被執行。
$(function() {
// bind some event listeners
}());
在上述情況下,函數的返回值傳遞給jquery。 由於函數是se3lf執行自己,它會立即執行,無論函數返回將傳遞給jquery,所以這不是一個好方法,因爲目標是執行函數,一旦文檔準備就緒,這是不是發生在這種情況下
$(function(){...}); OR $(document).ready(function(){ ... });
此功能之間的差異被稱爲當DOM準備就緒,這意味着,你可以開始例如查詢元素。 .ready()將在不同的瀏覽器上使用不同的方式來確保DOM真的準備就緒。
(function(){ ... })();
這不是別的,一旦調用自身的可能時,瀏覽器解釋你的JavaScript功能。因此,您不可能在這裏成功地處理DOM元素。
$(document).ready(function(){
// Write code here
});
$(function() {
// bind some event listeners
}());
這一個是相同的,但在函數內部的$()
是:
$(function() {
// bind some event listeners
});
只有當DOM滿載,它的快捷方式,這將是一個執行自我調用功能。通常目標是防止變量名稱衝突,因爲它創建了一個新的範圍。
$(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");
}();
我希望很清楚,再見。
你的第二個例子將執行函數的結果*(它也需要是一個函數) – yoavmatchulsky