Javascript'de, eval
sonuçlarını önbelleğe almak mümkün mü? Elimde olsacache eval() sonuç
Örneğin çok iyi olurdu:
var str="some code...";
var code = eval(str);
//later on...
code.reExecute();
Javascript'de, eval
sonuçlarını önbelleğe almak mümkün mü? Elimde olsacache eval() sonuç
Örneğin çok iyi olurdu:
var str="some code...";
var code = eval(str);
//later on...
code.reExecute();
Bir işlev gövdesini str
yapabilir ve eval
yerine New Function
kullanabilirsiniz.
var fn = eval("(function(a){alert(a);})")
'eval' çağrısı sonucu javascript değerlendirmektir. Javascript (tarayıcılarda) herhangi bir 'derleme' işlevi sunmaz.
sen (eval kullanarak) alabilir en yakın:
var cached_func = eval('function() {' + str + '}');
Sonra sonra
cached_func
çağırabilir.
gibi
var fn = new Function([param1, param2,...], str);
Ve olmak fn(p1, p2,...)
Ya eval kullanmak arayarak yeniden ve str
yapmak şey asenkron alma için bir önbellek nesnesi sonucu değerlendirir ve depolayan bir işlev yapın :
var Cache = { } ;
function evalString(string) {
var evaluated = eval(string) ;
Cache.evalResult = evaluated ;
}
gibi bir kod: içeriğinizi dış manipülasyon için kapıyı açmak olabileceğinden http://www.jslint.com, söyleyeceği gibi bir yan not
Cache.evalResult(/* arguments */) ;
, "eval kötüdür". Neden ilk etapta çalışan eval
'a ihtiyacınız var?
Değerlendirilmesi gereken bir dizim var ... – DuduAlul
Bu. Dize içindeki kodun, içerdiği kodun yerel kapsamını miras almaması nedeniyle, "eval" değerinden biraz farklı olsa da. – bobince
@bobince, Sadece düzenliyordum – Mic
Her iki cevap da aynısını yapmak için ALMOST kullanıyormuş gibi görünüyor, harika! Tam bir yöntem olan benchamark var mı tam bir yöntem (1- Bir dizgiyle yeni fonksiyon yaratma, 2- eval a function) daha iyi? – DuduAlul