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

匿名関数ですかfunction(){ }、それとも自己呼び出し関数ですか?そして、2つの違いは何でしょうか?

4

4 に答える 4

9

名前/参照のない関数は無名関数と呼ばれます。内部の関数$('#foo').click(function(){ });は無名関数です。

自己呼び出し関数は、定義の直後に呼び出される関数です。

(function () { })();->は自己呼び出し関数です。

于 2012-08-30T20:14:49.463 に答える
5

これは無名関数です。

「自己呼び出し関数」は、その名前が示すように、それ自体を呼び出す関数です。

このような:

(function(){
    console.log('hi');
}());
于 2012-08-30T20:14:51.647 に答える
1

はい、無名関数です。「自己呼び出し関数」が何を意味するのかわかりません。おそらくこれです。

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

これは、定義してすぐに呼び出す無名関数です。関数に続く括弧が、関数を実行する原因になります。

最初のケースでは、将来のある時点で、つまりhtml要素がクリックされたときにjavascriptを実行する関数を作成しています。jsは関数をどこかに保存し、htmlがクリックされると、jsは関数を呼び出します。

したがって、違いは、1つの関数がNOWを実行し、1つの関数が後で実行されることです。

于 2012-08-30T20:22:17.073 に答える
0

自己呼び出し関数は、次と同等です。

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

匿名関数の使用は次と同等です:

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

どちらの場合も、名前空間が小さな関数の名前で汚染されていないという違いがあります。

于 2012-08-30T20:26:01.800 に答える