2009-03-12 13 views
3

Ich verstehe Verschlüsse in Javascript, aber was ich bin nicht sicher über ist, wie es verschachtelte Funktionen behandelt. Zum Beispiel:geschachtelte Funktion Speicherverbrauch in Javascript

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

Ich weiß, dass eine neue Schließung jedes Mal wenn ich Funktion aufrufen a erstellt wird, aber nicht, dass Schließung auch eine neue Instanz der anonymen Funktion zu someFunction weitergegeben? Wäre es besser, wenn ich die ff stattdessen tue:

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

Nur um sehr pingelig zu sein, sollten Sie ein Semikolon nach der Schließung der Funktion setzen. var b = Funktion (x) {/ * Mach was * /}; var a = Funktion (o) {o.someFunktion (b); }; – Fenton

Antwort

3

In Ihrem ersten Beispiel, dass jedes Mal, wenn ein aufgerufen wird, wird eine anonyme Funktion definiert und someFunction() geben. Dies ist teurer als das, was Sie im zweiten Beispiel haben, was die effizientere Methode ist, da die Funktion (jetzt b genannt) nur einmal definiert wird.

Ich habe vor ein paar Monaten eine ähnliche Frage gestellt: es könnte Ihnen auch helfen. Does use of anonymous functions affect performance?

+0

Danke, der Link zu Ihrer Frage war sehr hilfreich. – jtjin

Verwandte Themen