2

間に違いはありますか

(function (){alert('')}    ())

(function (){alert('')})    ()

どちらも機能しますが、いつそれぞれを使用する必要がありますか?

4

2 に答える 2

4

ラップ括弧は、構文を関数宣言ではなく関数式として解析するようにパーサーに強制するためだけに存在します。関数宣言を呼び出すことは違法ですが、関数式を呼び出すことは合法であるため、これが必要です。

そのためには、呼び出し括弧がどこにあるかは問題ではありません。また、関数を強制的に式として解析する方法も問題ではありません。以下も同様に機能します。

!function () {
    alert('')
}();

~function () {
    alert('')
}();

// Any unary operator will work

折り返し括弧 (グループ化演算子) を使用する場合は、呼び出し括弧を 内に移動するように JSLint が指示することに注意してください。これは単にスタイル上の選択であり、必要に応じて無視できます。

于 2013-03-15T09:43:21.473 に答える
1

どちらも同じことをします。

JSLint は、グループ化括弧内に実行括弧を使用して、最初のものを使用することをお勧めします。これにより、おそらくすべてがきちんとグループ化されます。

個人的には、コードをスキャンすると、実行が関数式から際立っていることがわかるので、2番目の例の方がはるかに明確だと思います。

重複していませんが、この質問は同様の根拠をカバーしているため、一見の価値があるかもしれません。

于 2013-03-15T09:43:50.367 に答える