2011-08-02 12 views
6

JSLintを使用してスクリプトを実行し、かっこの配置で特定の問題を選択しました。クロージャはどのようにフォーマットする必要がありますか?

私は書かれていた:

(function(){})(); 
をし、それが使用することを示唆された。

(function(){}()); 

私は何のバグや問題、この特定の変更の修正になど興味があります。私は、JSLintが問題としてそれを選んだので、誰かの問題でなければならないと思います。それが純粋なスタイリングである(どのビデオを覚えているが、私はそれが最初の方だと思うことはできません)http://www.yuiblog.com/crockford/にクロックフォードによると

(
    function (p) { 
    ...code... 
    } 
)(param); //parameters after the parens 

-vs-

(
    function (p) { 
    ...code... 
    }(param) //parameters within the parens 
); 
+2

http://stackoverflow.com/questions/5938802/are-function-and-function-functionally-equal-in/5938845#5938845 – SLaks

+0

@zzzzBovうわー、あなたは明らかに、最初の文を読んだことはありませんでした。 SLaksにリンクしていると答えてください。それはあなたの質問に正確に答える2つの構文間の違いの非常に詳細な内訳を含んでいます。 –

答えて

5

ファンクションJSLintを修正しようとしている特定の問題は、機能バグを引き起こす可能性がクローズ;の欠如に関し、引数として解釈されます

(function A(arg){ 
    // stuff 
}) 

(function B(){ 
    ... 
}); 

BargとしてAに渡され、完全に有効です。しかし、これはしばしば意図されたものではない。なぜなら、これらは自己実行型であり、末尾の()が忘れられたからである。提案された構文は、誤って意図したとおりに関数を実行するのを忘れてしまったという混乱を取り除きます。

これは価値がありますが、私はほとんど常に最初の構文も使用しています。習慣。

0

:フォームを拡張

読みやすく、バグや問題に関連していません。

編集:

私はそれが法第IIIであると思う:究極の

関連する問題