我想在Javascript中将字符串计算为表达式。我正在从一个动态的JSON中读取字符串。所以,表达可以是任何东西。这是使用
的伪代码var formula = {
"expression":"value * 9/5 + 32" //Dynamic JSON
}
var value = 26; // Dynamic value
var result = evaluateExpression(value, formula);
function evaluateExpression(value, formula) {
return eval(formula.expression);
}
这就是我使用eval()的方式。还有其他替代方案吗?我也考虑使用Math.js,我认为这对我的要求来说太过分了。
答案 0 :(得分:0)
eval
的替代方法是在javascript中创建解析器和赋值器。这是相当微不足道的,但有点乏味。除非您要评估一个用户在其他用户的浏览器中提供的字符串,否则eval
大部分都可以。如果是这种情况,您将不得不编写一个解析器(或使用像PEG.js这样的工具生成它)。
答案 1 :(得分:0)
你可以使用Function构造函数
来实现相同的功能
var formula = {
"expression":"value * 9/5 + 32" //Dynamic JSON
}
var value = 26; // Dynamic value
var result = evaluateExpression(value, formula);
alert(result);
function evaluateExpression(value, formula) {
return (new Function( 'value', 'return (' + formula.expression + ')' )(value));
//return eval(formula.expression);
}