之間的區別,我已經看到了使用這兩種開發商:是什麼就是什麼這兩者之間的區別兩種功能
這一個:
$(document).ready(function(){
console.log("on load");
});
這一個:
(function() {
console.log("self properling");
})();
如果有人比另一人有什麼優勢?
之間的區別,我已經看到了使用這兩種開發商:是什麼就是什麼這兩者之間的區別兩種功能
這一個:
$(document).ready(function(){
console.log("on load");
});
這一個:
(function() {
console.log("self properling");
})();
如果有人比另一人有什麼優勢?
是有區別的,一旦DOM就緒
(function() {
console.log("self properling");
})();
是執行annonymous功能的自
$(document).ready(function(){
console.log("on load");
});
將執行,也不會等待DOM已準備就緒事件
我認爲一個更好的術語來描述第二種情況是立即調用函數表達式 - cf. http://benalman.com/news/2010/11/immediately-invoked-function-expression/ – adhocgeek
誰低估了這個?這完全正確。 –
@RoryMcCrossan我已經學會了忽略那些瘋狂的選民 –
DOM準備就緒:已讀取文檔並準備好進行操作(PS Uncached Images still正在加載)
$(document).ready(function(){
});
DOM準備速記:
$(function(){
});
安全jQuery
別名($
)DOM準備速記:防止$
別名與其他腳本衝突
jQuery(function($){
});
安全jQuery
別名($
)+自調用(DOM沒有準備好):
(function($){
})(jQuery);
立即調用函數表達式:
(function myName(){
})();
命名函數聲明:
function myName(){
}
存儲在變量匿名功能:
var myName = function(){
};
存儲在變量命名函數:
var myName = function myFun(){
};
你必須小心謹慎:*「立即自我調用函數(匿名)」*中的第二個例子本身是無效的JavaScript。它被評估爲函數聲明,並且必須具有名稱。你的*「命名函數(存儲在變量中)」*例子實際上是一個存儲在變量中的匿名函數。命名函數總是形式爲'function name(){...}'。函數*聲明*總是被命名的,而函數*表達式*可以是匿名的或命名的。 –
現在看起來不錯:) –
一個是當DOM就緒的觸發,另一種是一個自調用函數。 – deceze
而重複是錯誤的。沒有'$'! – deceze
答案是重複的,與這個不一樣。注意第二個例子是一個自調用函數,而不是jQuery DOM準備簡寫'(function(){/ * ...* /});' –