0

私は現在playframeworkで遊んでいます。私は、Coffeescript を使用するチュートリアルから始めました。CoffeeScript は javascript に変換されます。この特定の例では、javascript メソッドは、ページが読み込まれるときにリストを動的に生成する必要があります。

生成された JavaScript は、以前に見たパターンを使用しています。これは、変数または関数のスコープに使用できると読んだことがあります。つまり、匿名関数内にすべてが含まれています。

ただし、その無名関数内には、JQuery スタイルの window.isReady のコールバックがあります。

(function() {
  $(function() {
      // the code within the callback goes here!
  });

}).call(this);

これは、一連のプログラムされたルールによって生成された結果によるものですか、それとも無名関数内にコールバックを含める理由があるのでしょうか? その JQuery onReady コールバックをスコープする理由は?

もちろん、機能は自己呼び出しの無名関数に囲まれることなく機能します。では、何かご利益はありますか?

4

2 に答える 2

1

関数はスコープを区切るため、グローバル名前空間の汚染を防ぐためのベスト プラクティスとしてこれを行う必要があります。

この単純な例では、変数を保存しないので必要ないかもしれませんが、プライベートやその他の関数を持つことができます (それらをグローバルにする必要はありません)。

このような:

(function() {

  var a = 5;

  var f = function() { ... }


  $(function() {
      // the code within the callback goes here!
      f();
      console.log(a);
  });

}).call(this);
于 2015-12-29T17:02:28.397 に答える
1

これは IIFE (即時呼び出し関数式) と呼ばれます。まあ...少なくともそれの味。通常は IIFE には使用しません.callが、同じことを行います。この場合の目的は、主にグローバルスコープの汚染を防ぐことです。

それらについてはこちらをご覧ください。

于 2015-12-29T17:16:40.477 に答える