5

このコード ブロックに出くわしましたが、外側の関数が引数を取らない場合に関数を返す必要性が本当にわかりませんか?

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

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

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

1 に答える 1

5

d3.format(".2f")可能ですが、一度だけではなく毎回呼び出すことになります。関数の実行内容と呼び出される頻度によっては、パフォーマンスのオーバーヘッドがさらに増える可能性があります。

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

于 2013-03-01T12:07:31.950 に答える