这是中世纪的邪恶吗

Is this eval Evil?

本文关键字:邪恶 中世纪      更新时间:2023-11-17

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

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

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

*注意-*在函数'fuzz'中,我将对参数的值进行检查。(检查字符串、长度等)。我想这就是使用eval的原因,它在互联网上的名声太差了。

感谢

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

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