2013-03-01 10 views
5

私はこのコードブロックに遭遇し、外側の関数が引数を取っていないときに関数を返す必要は本当にありませんか?このJavascriptファクトリファクトリにはどのような値が追加されますか?

var percent = (function() { 
    var fmt = d3.format(".2f"); 
    return function(n) { return fmt(n) + "%"; }; 
})() 

アム私は何かが欠けているか、それはのように書き換えることができます。

var percent = function(n) { 
    return d3.format(".2f")(n) + "%"; 
} 

答えて

5

ことはできるが、その後、あなたの代わりに一度だけのたびd3.format(".2f")を呼び出しています。どのような機能が実行されているか、どのくらい頻繁に呼び出されているかによって、パフォーマンス上のオーバーヘッドが増える可能性があります。

IIEF(すぐに呼び出される関数式)はクロージャを返すと、あなたはpercentのすべての将来の使用のために、「キャッシング」fmtです。

+0

ああ、キャッシングです。ありがとう。 – dani

関連する問題