はここを参照してください:あなたが行ったように宣言するとき、あなたは関数式(上記のリンクから関数を定義する第三の方法)として、それを使用している
。任意の式と同様に、この(expression)
は式に評価されます - ここではかっこが使用されますが、必要な場合は優先順位が確立されます。
var f = function(a) {
var s = ((((1)))) + ((((a))));
console.log(s);
};
(((((f))))) (2);
(live example)をしてから(基本的に、1 + 2 = 3
の印刷で)同じ結果とすべての不要な括弧を削除します。だから、たとえば、これを書くことができます。結果:
(function(...) { ... })
は、いくつかの引数を受け取り、実行するボディを持つ関数です。この:
(function(...) { ... })()
はにほとんど同等です:
var f = (function(...) { ... });
// Now f is a function that can be called
f();
無名関数は、2つの理由のために、とりわけ有用である - 彼らは匿名である(すなわち、それらは追加の名前を作成しない - を参照して、再び上記のSOqリンク)、それらはグローバルにする必要のない他のもののための「コンテナ」です。
[JavaScriptの匿名関数はどのように機能するのですか?](0120-18752) – ziesemer
代替方法すべてのかっこを避ける同じことをすることは、 'new function(){...};'です。 Newはあなたのために関数を呼び出します。 – jpsimons
@darkporter:主な違いの1つは、 'new function(){...}'が関数*をコンストラクタ*として呼び出すことです。したがって、 'this'は内部で異なり、式は' function(){...} 'が返すものではなく、新しく作成されたオブジェクトに評価されます。 (私はあなたがすでにこのことを知っていると思っていますが、そうでない人の利益のために明示的にする価値があると思います!) – ruakh