这是中世纪的邪恶吗
Is this eval Evil?
用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
字符串相比,这也让您能够更好地控制可能发生的错误。
相关文章:
- “出口”;保存以备以后使用”;远离(邪恶)
- 这是中世纪的邪恶吗
- 埃瓦尔做了什么,为什么它是邪恶的
- 如何获取jquery.Ajax与“;投掷1<不要邪恶>"在json响应前面
- 关于eval的邪恶:如何清理
- 扩展JavaScript的内置类型 - 它是邪恶的吗?
- eval是邪恶的,但是我有选择吗?
- 如何应对邪恶?在System.Shell.execute()之前验证用户输入
- 替代邪恶的求值-关系运算符
- 从Textarea执行Javascript - JSHint eval是邪恶的
- 存储供以后函数使用的值的最佳方法是什么?我听说全局变量是邪恶的
- 邪恶的pdf - javascript调试
- 需要一个HTML框架的替代品(我现在知道为什么它们是邪恶的)
- Javascript,又一个“太多的递归”问题:复仇的邪恶eval()
- 编码风格 - JavaScript 的 eval() 什么时候不是邪恶的