我偶然发现了这段代码,当外部函数没有接受任何参数时,我真的没有看到返回函数的需要吗?
var percent = (function() {
var fmt = d3.format(".2f");
return function(n) { return fmt(n) + "%"; };
})()
我错过了什么或者可以改写为:
var percent = function(n) {
return d3.format(".2f")(n) + "%";
}
答案 0 :(得分:5)
它可以,但是你每次都会调用d3.format(".2f")
而不是一次。根据功能的作用以及调用的频率,这可能会增加额外的性能开销。
使用IIEF(立即调用函数表达式)返回闭包,您将“缓存”fmt
以用于percent
的所有未来用途。