这个eval邪恶吗?

时间:2013-11-28 09:40:56

标签: javascript eval

用JavaScript编写函数。该计划是函数创建一个对象,它需要布尔语句作为参数。像这样的东西 - >

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

我的问题是 - 这是邪恶的吗?

* 注 - * 在函数'fuzz'中,我将运行参数值的检查。 (检查string.length等)。我认为这就是人们如何使用eval,它在网络上的声誉如此糟糕。

由于

1 个答案:

答案 0 :(得分:3)

总结评论中的结论:编写一个简单的规则评估引擎! E.g:

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字符串相比,这也使您可以更好地控制可能发生的错误。