Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/google-apps-script/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript cache eval()结果_Javascript - Fatal编程技术网

Javascript cache eval()结果

Javascript cache eval()结果,javascript,Javascript,在Javascript中,是否可以缓存的结果 例如,如果我能: var str="some code..."; var code = eval(str); //later on... code.reExecute(); “eval”调用的结果是评估javascript。Javascript(在浏览器中)不提供任何类型的“编译”功能 (使用eval)可以得到的最接近的结果是: 然后您可以稍后调用cached_func。您可以将str作为函数体,并使用新函数来代替eval var fn = new

在Javascript中,是否可以缓存的结果

例如,如果我能:

var str="some code...";
var code = eval(str);
//later on...
code.reExecute();

“eval”调用的结果是评估javascript。Javascript(在浏览器中)不提供任何类型的“编译”功能

(使用eval)可以得到的最接近的结果是:


然后您可以稍后调用
cached_func

您可以将
str
作为函数体,并使用
新函数来代替
eval

var fn = new Function([param1, param2,...], str);
并通过调用
fn(p1,p2,…)

或者使用eval,并使
str
类似

var fn = eval("(function(a){alert(a);})")

生成一个函数,用于计算结果并将其存储在缓存对象中,以便异步检索:

 var Cache = { } ;

 function evalString(string) {

     var evaluated = eval(string) ;
         Cache.evalResult = evaluated ;

 }
然后,您可以这样调用该代码:

 Cache.evalResult(/* arguments */) ;


另一方面,“eval是邪恶的”,这将告诉你,因为它可能为你的内容的外部操纵打开大门。为什么您首先需要
eval
评估它的功能?

这是一个问题。虽然它与
eval
略有不同,因为字符串中的代码不继承包含代码的局部范围。看起来两个答案使用的方法几乎相同,太好了!是否有任何性能基准测试哪种精确方法(1-使用字符串创建新函数,2-评估函数)更好?在JS库的第一个版本中,我从评估移动到新函数,但我没有注意到任何性能改进。但是,bobince的注释需要驱动您的选择,如果传递给函数的参数始终相同,则可以使用新函数,否则使用eval。您确定要使用eval吗?在当前版本的《纯洁》中,我们通过更努力的尝试,压制了这两种邪恶的方法。好啊这是另一个争论:)请参阅使用谷歌V8 JavaScript引擎的
Script::Compile
示例。
 Cache.evalResult(/* arguments */) ;