JQuery терминология относительно функций обратного вызова

$('#foo').click(function(){ });

Является ли function(){ } анонимной функцией или функцией самозапуска? И какая разница между этими двумя?

4 ответа

Функция без имени/ссылки называется анонимной функцией. Функция внутри $('#foo').click(function(){ }); является анонимной функцией.

Функция самозапуска - это функция, которая вызывается сразу после ее определения.

(function () { })(); → является самозапускаемой функцией.


Это анонимная функция.

"Функция самозапускания", как следует из названия, представляет собой функцию, которая вызывает себя.

Вот так:

(function(){
 console.log('hi');
}());


Да, это анонимная функция. Я не знаю, что вы подразумеваете под функцией self invoking, возможно, это:

(function(){alert("hello")}())

Это анонимная функция, которую вы определяете, а затем сразу вызываете - круглые скобки, следующие за функцией, являются причиной того, что функция выполняет.

В первом случае вы создаете функцию, которую вы хотите, чтобы javascript выполнялся в будущем, т.е. при нажатии на элемент html. js хранит функцию где-то, а затем, когда щелкнут html, js вызывает функцию.

Таким образом, разница в том, что одна функция выполняет СЕЙЧАС, а одна функция выполняет LATER.


Функция самозапуска эквивалентна:

function self_invoke(params...) {...};
function(args...);

Использование анонимной функции эквивалентно:

function anonymous(params...) {...};
$('#foo').click(anonymous);

В обоих случаях разница заключается в том, что пространство имен не загрязнено именем для маленькой функции.

licensed under cc by-sa 3.0 with attribution.