用户在此输入输入
<input type="text" id="expression_text" value="Enter equation.....">
假设他进入
var exp_string=$("#expression_text").val();
//"exp_string=4+6*9+3"
我们如何评估从UI端(Javascript或任何其他JavaScript库)以字符串格式给出的数学表达式 服务器端期望结果只有4 + 6 * 9 + 3 = 61 抱歉我的英语不好
答案 0 :(得分:0)
我很难理解你的追求。据我了解,你有一个数学分配字符串,你想要将字符串和计算值都返回给后端。
有几种方法可以做到这一点。如果您可以控制输入,那么显而易见的方法是使用eval()
,但更快的版本是避免eval
并使用Function
构造函数:
// I've replaced what would be returned by `val()` with the expected string
var text_input='exp_string=4+6*9+3'; //$("#expression_text").val();
// Performs the calculation and assigns the value to a global `exp_string` variable
Function(text_input)();
// Example of what can be used and what the variables hold
console.log(`${text_input} will equal ${exp_string}`);
重要!
如果我没有注意到有关eval
或Function
构造函数的安全问题,那将是我的疏忽。如下面的评论所述,eval
被认为是“邪恶”的原因。由于缺乏卫生设施和对输入的控制,它打开了危险的XSS攻击和其他攻击的前端。出于这个原因,最好是安全而不是抱歉,不要使用它。
这就是说 - ,这是部分自以为是的 - 它不是无法使用的。它有助于实现目的并且效率很高,但重要的是要研究安全风险并知道它何时适用。
答案 1 :(得分:0)
不要使用eval()
,只是不保存。使用像http://mathjs.org/这样的库来完成您的任务。