我在以下情况下发现了有关eval()危险的类似问题,但是答案并不能解决问题,并回答了是否存在危险,它仅建议了另一种方法。这就是为什么我要再次寻求新的答案。还发布于2016年
所以我想将条件作为参数传递,我知道这可以是一个函数,但是我已经读到eval ()
比new function () {return ...;}
快67%,这就是为什么我使用eval()] >
这是代码
var a = [0];
function LoopWithDelay (func, delay, param, condition){
console.log(eval (condition));
if (eval (condition)) {
func (param);
setTimeout (LoopWithDelay, delay, func, delay, param, condition);
}
}
function increment (x){
x[0] += 5;
}
LoopWithDelay (increment, 1000, a, "a[0]<10" );
[当调用LoopWithDelay()
函数时,我将最终参数(条件)作为字符串传递,以便在函数eval (condition)
中求值
在这种情况下使用eval()
是否错误?
[编辑]我的主要重点是使此代码可重用并消除冗余。这就是为什么我想通过条件作为参数。
示例:在测试应用程序中,屏幕以剩余速度闪烁的速度不同。如果t = 0s每2000ms闪烁一次如果10s
我在以下情况下发现了有关eval()危险的类似问题,但答案并不能解决问题,并回答了是否危险,它仅建议了另一种方法。这就是为什么...
确实看起来您只是在尝试进行动态测试,以对运行时代码中发生的更改做出反应。通常,您可以通过传递一个函数作为参数来执行此操作,而不是传递一个带有稍后“ eval()ed”代码的字符串)。这通常是您传递“行为”或评估仅在运行时可用的内容的方式。它在javascript中很常见。这具有相同的行为,但不需要eval()
: