2013-03-01 31 views
5

Bu kod bloğu üzerine tökezledim ve dış işlev herhangi bir argüman almazken bir işlevi döndürme ihtiyacını gerçekten görmüyor musunuz?Bu Javascript işlevi fabrika değeri nedir?

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

mıyım şey eksik ya da şu şekilde yazılabilir:

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

cevap

5

O can, ama o zaman yerine sadece bir kez her zaman d3.format(".2f") çağrıda bulunuyorlar. Fonksiyonun ne yaptığına ve ne sıklıkta çağrıldığına bağlı olarak, bu ek bir performans ek yükü ekleyebilir. IIEF ile

kapatılmasını dönen ( hemen işlev ifadesi çağrılan) için, "önbelleğe alma" percent gelecekteki bütün kullanımlar için fmt vardır.

+0

Ahh, bu önbellekleniyor. Teşekkürler. – dani