在某些计算中我在javascript中生成数学表达式,如
var myExpression = '';
if (!isNaN(myVal) && myVal> 0) {
myExpression += '(' + myVal+ ' * ' + someVal + ') +';
}
并且基于某些用户事件,我正在按预期在console.log中生成表达式
(1 * 1) + (10 * 5) + ...
或
(10 * 5) + ...
如何将此数学表达式表示转换为实际表达式并将其结果存储到变量?
答案 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