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(立即调用的函数表达式)返回闭包,您可以“缓存” .fmtpercent

于 2013-03-01T12:07:31.950 回答