2017-05-08 9 views
-1

どのように関数の実行をJavaScriptでキャッシュできますか?JavaScriptのキャッシング関数

キャッシュされた関数に複数の引数を渡すとどうなりますか?

+2

_cache_はどういう意味ですか? –

+2

**あなたのテキストを太字で表記しないでください**あなたが達成しようとしている目標を明確にしてください*:*どうすればよい質問ができますか? -to-ask) –

+2

関数の結果を任意の言語と同様に変数に格納しますか?あなたは何をしようとしていて何が効いていないのですか? – David

答えて

0

関数を渡すメソッドがあり、計算された値がキャッシュされる場所にキャッシュオブジェクトが内部的に保持されます。同じ引数を指定して関数を呼び出すと、キャッシュされた値が提供されます。あなたが複数の引数を渡す場合

function cacheFn(fn) { 
    var cache={}; 

    return function(arg){ 
     if (cache[arg]){ 
      return cache[arg]; 
     } 
     else{ 
      cache[arg] = fn(arg); 
      return cache[arg]; 
     } 
    } 
} 

は、まず私たちは、関数に渡されるすべてのパラメータを取得するには、引数を使用する必要がありますし、我々は、キャッシュオブジェクトのキーを生成することができます。キャッシュオブジェクトのキーを生成するのは難しいかもしれませんが、1つの解決策はすべてのパラメータを取得してそれらを連結することです。下のコードを見てください。

return function(){ 
    var args = arguments; 
    var key = [].slice.call(args).join(''); 
    if(cache[key]){ 
     return cache[key]; 
    } 
    else{ 
     cache[key] = fn.apply(thi, args); 
     return cache[key]; 
    } 
} 
+0

これはもちろん、引数が意味的に文字列に強制されることを前提としています。 –