Знак доллара перед самостоятельным объявлением анонимной функции в JavaScript?
В чем разница между этими двумя:
$(function () {
// do stuff
});
А ТАКЖЕ
(function () {
// do stuff
})();
5 ответов
Первый использует jQuery для привязки функции к document.ready
событие. Второй объявляет и немедленно выполняет функцию.
$(function() {});
это ярлык JQuery для
$(document).ready(function() {
/* Handler for .ready() called. */
});
В то время как (function() {})();
является выражением функции, вызываемым мгновенно, или IIFE. Это означает, что это выражение (не утверждение), и оно вызывается сразу после его создания.
Они обе являются анонимными функциями, но (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
})();