3

最近、他の人のコードで次のような関数を見ました。

function xyz(){ //function code here ;
} ();

();関数定義の後がわかりません。

();JavaScript の意味と、いつ使用する必要があるか教えてもらえますか?

4

1 に答える 1

3

あなたが示すコードはコンパイルされません。

括弧を追加すると、これは名前付きのすぐに呼び出される関数になります。

(function xyz(){ //function code here ;
}) ();

ほとんどの場合、これらの関数は匿名です:

(function(){
   var a; // a isn't visible outside
   // code using a
})();

コードは関数定義なしで直接呼び出されますが、そのような関数のポイントは、スコープの変数が外側の変数でリークしないようにスコープ (グローバル スコープまたは関数のみ) を定義することです。このパターンは、コードをきれいにするのに非常に役立ちます。外側のスコープに変数を追加せず、既存の変数を消去することはできません。

ここで、関数には名前もあり、内部で再帰に使用できます。

(function xyz(){
   var a; // a isn't visible outside
   // code using a and calling xyz
})();
于 2013-02-03T19:22:14.603 に答える