2012-05-02 7 views
1

可能性の重複:
Are “(function () { }) ()” and “(function () { } ())” functionally equal in JavaScript?匿名関数への即時呼び出しの2つの方法(function(d){}()); (関数(x){})();

私の質問これらの特殊文字を持つ、私は良い答えを見つけることができませんでした。 (誰もが彼らと一緒に検索する方法を知っていますか?)

私はすぐに(3)ここで差があること無名関数http://jsfiddle.net/ukqS8/1/

(function(d) { 
    document.write(d*2); 
})(3); 

(function(x) { 
    document.write(x*2); 
}(3)); 

を呼び出すために2つのパターンを見てきました配置:閉じ括弧の内側または外側。

私はここで第二のケースのための良好な説明が見つかりました:)(3)(引数、および封入なり、

function(x) {...}関数オブジェクトを作成するように私は理解

javascript function vs. (function() { ... }());

そのインタプリタに指示内部には声明があります。

最初のケースでは、何らかの形で関数であるステートメントを(function(d) {...})にしてから、このステートメント/関数に(3)を適用しているようです。

したがって、両方とも同じように実行されているようです。本当に違いはありますか?スコープ(私はそれを疑う)?どちらのオプションも好ましいですか?

答えて

2

ご理解に間違いがあります。

これらはどちらも関数式です。カッコの配置はここで違いはありません。

ただし、there can be a subtle differenceです。

+0

これははるかに簡単です。明確化のためにありがとうございます。 –

+0

どのようにその質問を見つけましたか?私はこれを取り除くことができます。 –

+0

@HeitorChang:私はそれに答えることを思い出していました。 – SLaks

1

これらはまったく同じです。違いは構文のみです。

関連する問題