2013-03-01 47 views
5

Tôi stumbled khi khối mã này và không thực sự thấy sự cần thiết phải trả lại một chức năng khi các chức năng bên ngoài không có bất kỳ đối số?Nhà máy chức năng Javascript này thêm giá trị nào?

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

Am tôi thiếu một cái gì đó hoặc nó có thể được viết lại như sau:

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

Trả lời

5

Nó có thể, nhưng sau đó bạn đang gọi d3.format(".2f") mỗi lần thay vì một lần duy nhất. Tùy thuộc vào những gì chức năng đang làm và tần suất nó được gọi, điều này có thể thêm một chi phí hiệu suất bổ sung.

Với IIEF (ngay lập tức gọi chức năng biểu hiện) trả lại đóng cửa, bạn là "bộ nhớ đệm" fmt cho tất cả các công dụng tương lai của percent.

+0

Ahh, đó là bộ nhớ đệm. Cảm ơn. – dani

Các vấn đề liên quan