此Java代码中的eval()危险吗?

问题描述 投票:1回答:1

我在以下情况下发现了有关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()危险的类似问题,但答案并不能解决问题,并回答了是否危险,它仅建议了另一种方法。这就是为什么...

javascript eval
1个回答
1
投票

确实看起来您只是在尝试进行动态测试,以对运行时代码中发生的更改做出反应。通常,您可以通过传递一个函数作为参数来执行此操作,而不是传递一个带有稍后“ eval()ed”代码的字符串)。这通常是您传递“行为”或评估仅在运行时可用的内容的方式。它在javascript中很常见。这具有相同的行为,但不需要eval()

© www.soinside.com 2019 - 2024. All rights reserved.