1

CommonJS 標準に準拠した Backdraft ローダーを使用しています。すべてがどのように機能するかを理解しようとしていますが、アドバイスが必要です。

タイムスタンプを取得したいとしましょう。これを行うとします。

define(function(){
    return (new Date()).getTime()
});

次に、単純なrequireを実行して実行してみます:

require(['timestamp'],function(timestamp) {
    console.log(timestamp())
    console.log(timestamp())
    console.log(timestamp())
}

今私が得るのは、タイムスタンプ関数が評価された時点から3回同じタイムスタンプです。define() は自動的に閉鎖を行いますか、それとも何が起こっていますか?

私は関数型プログラミングを学んでいるので、再利用できるこれらの小さな関数の実行方法を理解していないことが私の努力を妨げています:)

4

1 に答える 1

1

関数型プログラミングについてではありません。CJSモジュールの定義についてです。

上記の例では、「timestamp」モジュールをrequireした後、Backdraftローダー(BackdraftがわからないのでRequireJSと同じように動作すると仮定)が新しいタイムスタンプを作成してキャッシュします。したがって、その関数を呼び出すたびに。同じ値を返します。

于 2012-01-11T11:59:11.910 に答える