4

私は Facebook の JavaScript を読んでいて、その目的を理解できない奇妙な関数に出くわしました。

function bagof(a) {
    return function () {
        return a;
    };
}

私が知る限り

  • bagofパラメータ を受け入れる関数ですa
  • bagofすぐに無名関数を返します。
  • 返された関数は、元のパラメータを返しますa

の使用法は次のbagofようになると思います。

newFunction = bagof("This is the data");
​console.log( newFunction() );​ //Logs "This is the data"​​​​​​​​​​​​

ポイントは何ですか?に渡された変数または関数を直接使用または保存しないのはなぜaですか?

ソース ファイルには、アプリケーションの多くのユーティリティ関数が含まれているようです。

4

1 に答える 1

4

このbagof()メソッドは、定数関数 (常に同じ値を返す関数) を作成するファクトリとして使用できます。

そのようなコンテキストで使用する場合でも:

var randomFun = bagof(Math.random());

の呼び出しは、一度だけ (積極的に) 評価されるrandomFun()ため、常に同じ値を返します。Math.random()一部のAPIがメソッドを必要とし、単に定数値を渡したい場合に使用されるユーティリティメソッドだと思います。それ以外の:

giveMeCallback(function() {return 42})

あなたは簡単に言うことができます:

giveMeCallback(bagof(42))
于 2012-04-19T19:49:42.800 に答える