Saya mempelajari THREE.js dan melihat pola di mana fungsi didefinisikan seperti ini:
var foo = ( function () {
var bar = new Bar();
return function ( ) {
//actual logic using bar from above.
//return result;
};
}());
(Contoh lihat metode raycast di sini ).
The biasa variasi metode tersebut akan terlihat seperti ini:
var foo = function () {
var bar = new Bar();
//actual logic.
//return result;
};
Membandingkan versi pertama dengan variasi normal , versi pertama tampaknya berbeda dalam hal:
- Ini memberikan hasil dari fungsi yang mengeksekusi sendiri.
- Ini mendefinisikan variabel lokal dalam fungsi ini.
- Ini mengembalikan fungsi sebenarnya yang berisi logika yang menggunakan variabel lokal.
Jadi perbedaan utamanya adalah pada variasi pertama bilah hanya ditetapkan satu kali, saat inisialisasi, sedangkan variasi kedua membuat variabel sementara ini setiap kali dipanggil.
Tebakan terbaik saya tentang mengapa ini digunakan adalah membatasi jumlah contoh untuk bar (hanya akan ada satu) dan dengan demikian menghemat overhead manajemen memori.
Pertanyaan saya:
- Apakah asumsi ini benar?
- Apakah ada nama untuk pola ini?
- Mengapa ini digunakan?