2013-11-28 41 views
0

在JavaScript中编写函数。该计划是该函数创建一个对象,它需要布尔语句作为参数。像这样 - >这是eval邪恶吗?

var foo = new fuzz("pie < squirrel", "monkey === banana"); 

我的问题是 - 这是邪恶?

* 注 - *在函数'fuzz'中,我将运行对参数值的检查。 (检查字符串长度等)。我认为这就是eval的使用方式,它在t'up网站上的声誉如此糟糕。

感谢

+4

为什么不将这些语句作为匿名函数传递? – helpermethod

+6

您显示的代码不是。你实际使用'eval'的代码本身可能不是。但也许有一个更好的解决方案,根本不需要'eval'。我们不能没有更多的上下文。 – deceze

+2

这些值来自用于布尔表达式的值?是否有任何理由你不能只传递布尔值? – Guffa

回答

3

总结注释中的结论:写一个简单的规则评估引擎!例如: -

var variables = { ... }; 

function niceEval(condition) { 
    var operands = condition.match(/(\w+)\s+(\S+)\s+(\w+)/); 

    switch (operands[2]) { 
     case '<' : 
      return variables[operands[1]] < variables[operands[3]]; 
     ... 
    } 
} 

这也为您提供了比盲目eval荷兰国际集团的字符串可能出现的错误,更多的控制。

+0

是的,这是美丽的家伙。谢谢。 – User2