В чем разница между этими двумя:
$(function () {
// do stuff
});
А ТАКЖЕ
(function () {
// do stuff
})();
В чем разница между этими двумя:
$(function () {
// do stuff
});
А ТАКЖЕ
(function () {
// do stuff
})();
Первый использует jQuery для привязки функции к событию document.ready
. Второй объявляет и немедленно выполняет функцию.
$(function() {});
— это ярлык jQuery для
$(document).ready(function() {
/* Handler for .ready() called. */
});
В то время как (function() {})();
является мгновенно вызываемым функциональным выражением или IIFE. Это означает, что это выражение (а не оператор), и оно вызывается сразу после создания.
(function () { arguments.callee() })()
будет самовыполняющейся/вызывающей анонимной функцией, а (function(){})()
— просто анонимной функцией, которая вызывается немедленно. См.: benalman.com/news/2010/11/< /а>
- person nwellcome; 30.09.2011
Обе они являются анонимными функциями, но (function(){})()
вызывается сразу, а $(function(){})
вызывается, когда документ готов.
jQuery работает примерно так.
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
Итак, вы просто вызываете функцию jQuery и передаете функцию, которая будет вызываться при готовности документа.
«Самозапускающаяся анонимная функция» аналогична этому.
function a(){
// do stuff
}
a();
Единственная разница в том, что вы не загрязняете глобальное пространство имен.
одна из них — функция jquery $(document).ready
, а другая — просто анонимная функция, которая вызывает сама себя.
$(function () {
// It will invoked after document is ready
});
Выполнение этой функции после того, как документы будут готовы, означает, что весь HTML должен быть загружен до его выполнения, но во втором случае функция вызывается сразу после его создания.
(function () {
// It will invoked instantly after it is created
})();