THREE.js üzerinde çalışıyorum ve işlevlerin şu şekilde tanımlandığı bir model fark ettim:
var foo = ( function () {
var bar = new Bar();
return function ( ) {
//actual logic using bar from above.
//return result;
};
}());
(Örnek burada raycast yöntemine bakın ).
Normal Böyle bir yöntemin varyasyon şu şekilde görünecektir:
var foo = function () {
var bar = new Bar();
//actual logic.
//return result;
};
İlk versiyonu normal varyasyonla karşılaştırdığımızda, ilk versiyon farklı görünüyor:
- Kendi kendine çalışan bir işlevin sonucunu atar.
- Bu işlev içinde yerel bir değişkeni tanımlar.
- Yerel değişkeni kullanan mantığı içeren gerçek işlevi döndürür .
Dolayısıyla temel fark, ilk varyasyonda çubuğun yalnızca bir kez atanması, ikinci varyasyonun her çağrıldığında bu geçici değişkeni yaratmasıdır.
Bunun neden kullanıldığına dair en iyi tahminim, bar için örnek sayısını sınırlaması (yalnızca bir tane olacaktır) ve böylece bellek yönetimi ek yükünden tasarruf sağlamasıdır.
Sorularım:
- Bu varsayım doğru mu?
- Bu model için bir isim var mı?
- Bu neden kullanılıyor?