2009-03-12 13 views
3

Javascript'teki kapanışları anlıyorum, ancak emin olmadığım şey iç içe geçmiş işlevleri nasıl işlediğidir. Örneğin:iç içe işlevli bellek kullanımı javascript'te

var a = function(o) { 
    o.someFunction(function(x) { 
     // do stuff 
    }); 
} 

Ben yeni kapatma ben işlevi a diyoruz her şey yaratılır biliyorum, ama bu kapatma da someFunction geçirilen anonim fonksiyonunun yeni bir örneğini içerir? ben yerine ff yaptıysam iyi misiniz: İlk örnekte

var b = function(x) { /* do stuff */ } 
var a = function(o) { 
    o.someFunction(b); 
} 
+0

Sadece uber-picky olmak için, işlevin kapatılmasından sonra bir yarı-kolon koymalısınız. var b = işlev (x) {/ * yapılacaklar * /}; var a = işlev (o) {o.someFunction (b); }; – Fenton

cevap

3

, bir denir her zaman, anonim bir fonksiyon tanımlanmış ve someFunction() geçirilir. Bu, ikinci örnekte var olandan daha pahalıdır, ki bu daha etkili bir yöntemdir, çünkü fonksiyon (şimdi b olarak adlandırılır) sadece bir kez tanımlanır.

Birkaç ay öncesine benzer bir soru sordum: size de yardımcı olabilir. Does use of anonymous functions affect performance?

+0

Teşekkürler, sorunuzun bağlantısı çok yardımcı oldu. – jtjin