3

このスタイルを使用することに何か利点があるかどうか疑問に思ってい(function() { <code> })();ます。スクリプトファイルでライブラリスクリプトを続行します。基本的に、イベントリスナーやその他の初期化ロジックを設定するためのロジックが配置される場所です。
したがって、たとえば:

<script>
(function() {
     $('div').on('click', 'a', function() {
          alert('click');
     });
})();
</script>

vs

<script>
     $('div').on('click', 'a', function() {
          alert('click');
     });
</script>
4

3 に答える 3

2

いいえ、最初のコードは追加のコードのみです。

これで、最初の方法でグローバルが作成されない場合があります。

于 2012-04-09T21:08:28.177 に答える
2

この場合の自己実行無名関数のポイントは、真のグローバルが必要ないときにグローバル関数または変数を定義しないようにすることです。あなたの例にはどちらも含まれていないので、この場合は必要ありません。

自己実行型の無名関数は、必要なものを定義するためのプライベートクロージャを提供し、外部から分離されています。外部コードとの競合は発生せず、外部コードはクロージャー内の関数や変数に直接アクセスできません。

それが標準的な慣行であるかどうかについてのあなたの質問に関しては、それは本当にあなた次第です。個人的には、実際のグローバルスペースに触れることなく、ヘルパー関数や時折グローバルを自由に定義できるので、それは良い考えだと思います。を使用している場合は$(document).ready(fn)、initコードの周りにすでにクロージャーがあるので、その点についてはすでに設定されています。そうでなければ、それはあなた次第です。個人的にはそれは良い考えだと思いますし、それを標準的な方法にすることには少しマイナス面があります。もちろん、真のグローバル変数または関数が必要な場合はwindow、クロージャーの外部で使用できるように、オブジェクトで定義する必要があることを覚えておく必要があります。

于 2012-04-09T21:14:06.970 に答える
0

jQuery(document).ready(function(){...});を使用する必要があります。イベントリスナーを設定するためのモデル、そうでなければええと...まあ、jQueryは準備ができていません。

于 2012-04-09T21:08:58.813 に答える