2013-03-01 14 views
5

Natknąłem się na ten blok kodu i naprawdę nie widzę potrzeby zwracania funkcji, gdy funkcja zewnętrzna nie przyjmuje żadnych argumentów?Jaką wartość dodaje ta fabryka funkcji JavaScript?

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

Am I czegoś brakuje lub może być zapisane jako:

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

Odpowiedz

5

może, ale potem dzwonisz d3.format(".2f") każdym razem, zamiast tylko raz. Zależnie od tego, co robi funkcja i jak często jest wywoływana, może to zwiększyć dodatkowy nakład pracy związanej z wydajnością.

Z IIEF (natychmiast wywoływana funkcja ekspresji) powrocie zamknięcie, jesteś „buforowanie” fmt dla wszystkich przyszłych zastosowań percent.

+0

Ahh, to jest buforowanie. Dzięki. – dani

Powiązane problemy