将数学表达式从文本转换为计算表达式

时间:2015-11-03 20:47:06

标签: javascript jquery

在某些计算中我在javascript中生成数学表达式,如

var myExpression = '';
if (!isNaN(myVal) && myVal> 0) {
    myExpression += '(' + myVal+ ' * ' + someVal + ') +';                    
}

并且基于某些用户事件,我正在按预期在console.log中生成表达式

(1 * 1) + (10 * 5) + ...

(10 * 5) + ...

如何将此数学表达式表示转换为实际表达式并将其结果存储到变量?

2 个答案:

答案 0 :(得分:1)

您可以在字符串上使用eval(),将其作为JavaScript运行。这将允许计算数学表达式:

eval(myExpression);

请注意警惕使用eval()。见Why is using the JavaScript eval function a bad idea。尽管如此,人们现在可以使用JavaScript内置控制台做很多事情,因为用户可以在任何网页上执行他们想要的任何JavaScript。有关潜在问题,请参阅third comment by of this answer byPrestaul。如果您确保用户无法直接操作变量,那么您可以进行罚款。

答案 1 :(得分:0)

您可以使用math.js,它附带自己的表达式解析器:

math.eval('(1 * 1) + (10 * 5)');  // 51

或在范围中提供变量并在表达式中使用它们:

math.eval('(myVal * someVal)', {myVal: 2, someVal: 10});  // 20

您还可以将表达式解析为树并在树上执行操作,请参阅docs:

http://mathjs.org/docs/expressions/parsing.html http://mathjs.org/docs/expressions/expression_trees.html