In Javascript, ist es möglich, die Ergebnisse von eval
zwischenzuspeichern?cache eval() Ergebnis
Zum Beispiel wäre es toll, wenn ich könnte:
var str="some code...";
var code = eval(str);
//later on...
code.reExecute();
In Javascript, ist es möglich, die Ergebnisse von eval
zwischenzuspeichern?cache eval() Ergebnis
Zum Beispiel wäre es toll, wenn ich könnte:
var str="some code...";
var code = eval(str);
//later on...
code.reExecute();
Sie können str
den Körper einer Funktion machen und New Function
anstelle von eval
verwenden.
var fn = new Function([param1, param2,...], str);
Und es Wiederverwendung von fn(p1, p2,...)
Aufruf Oder eval und str
macht so etwas wie
var fn = eval("(function(a){alert(a);})")
Das Ergebnis der ‚eval‘ Ruf ist das Javascript zu bewerten. Javascript (in Browsern) bietet keinerlei "Kompilierfunktion".
Die nächstgelegene Sie (mit eval) bekommen könnte, ist:
var cached_func = eval('function() {' + str + '}');
Dann können Sie die cached_func
später an.
eine Funktion machen, dass das Ergebnis in einem Cache-Objekt auswertet und speichert für asynchronen Abruf :
var Cache = { } ;
function evalString(string) {
var evaluated = eval(string) ;
Cache.evalResult = evaluated ;
}
Sie können dann anrufen dass Code wie folgt:
Cache.evalResult(/* arguments */) ;
Auf einer Seite zur Kenntnis, „eval ist böse“, wie http://www.jslint.com wird Ihnen sagen, da es die Tür für eine externe Manipulation Ihrer Inhalte öffnen können. Warum brauchen Sie eval
, die es in erster Linie funktionieren?
Ich habe eine Zeichenfolge, die ausgewertet werden muss ... – DuduAlul
Dies. Obwohl es etwas anders ist als "eval", weil der Code in der Zeichenfolge nicht den lokalen Bereich des enthaltenen Codes erbt. – bobince
@bobince, Ich habe es gerade bearbeitet – Mic
Es scheint, als ob beide Antworten fast die gleiche Art und Weise verwenden, es ist großartig! Gibt es irgendeine Performance benchamark die genaue Methode (1- Erstellen neuer Funktion mit einer Zeichenfolge, 2- eval eine Funktion) ist besser? – DuduAlul