Знак доллара перед самостоятельным объявлением анонимной функции в JavaScript?
в чем разница между этими двумя:
$(function () {
// do stuff
});
и
(function () {
// do stuff
})();
5 ответов
первый использует jQuery для привязки функции к document.ready
событие. Второй объявляет и немедленно выполняет функцию.
$(function() {});
является ярлыком jQuery для
$(document).ready(function() {
/* Handler for .ready() called. */
});
пока (function() {})();
- мгновенно вызываемое выражение функции, или IIFE. Это означает, что его выражение (а не оператор) и вызывается сразу после его создания.
один является jquery $(document).ready
функция, а другая-просто анонимная функция, которая вызывает себя.
они оба анонимные функции, но (function(){})()
вызывается немедленно, и $(function(){})
вызывается, когда документ готов.
jQuery работает примерно так.
window.jQuery = window.$ = function(arg) {
if (typeof arg == 'function') {
// call arg() when document is ready
} else {
// do other magics
}
}
таким образом, вы просто вызываете функцию jQuery и передаете функцию, которая будет вызываться в документе ready.
"самоисполняющаяся анонимная функция" - то же самое, что и это.
function a(){
// do stuff
}
a();
единственная разница в том, что вы не загрязняете глобальный пространство имен.
$(function () {
// It will invoked after document is ready
});
выполнение этой функции после подготовки документов означает, что весь HTML должен быть загружен до его выполнения, но во втором случае функция вызывается сразу после ее создания.
(function () {
// It will invoked instantly after it is created
})();