javascript:检查表达式是否可计算?
我有用户给出的随机表达式(例如:2+3*5,21*+(4)7,*-54+3)。这些表达式可以包含任意数量的操作数或运算符以形成表达式。我需要对这些表达式求值以获得答案。我尝试使用eval()函数求值,但问题是,当将错误的表达式传递给eval()函数时,它会抛出错误并停止程序。我通过javascript:检查表达式是否可计算?,javascript,eval,Javascript,Eval,我有用户给出的随机表达式(例如:2+3*5,21*+(4)7,*-54+3)。这些表达式可以包含任意数量的操作数或运算符以形成表达式。我需要对这些表达式求值以获得答案。我尝试使用eval()函数求值,但问题是,当将错误的表达式传递给eval()函数时,它会抛出错误并停止程序。我通过 if(eval(exp)) { //Action Expression is evaluatable } else { //expression is not Evaluatable } 但
if(eval(exp))
{
//Action Expression is evaluatable
}
else
{
//expression is not Evaluatable
}
但不起作用并产生错误消息
"SyntaxError: unterminated regular expression literal."
由于表达式性质的多样性,我很难在计算前构造检查语句。您能建议我如何简单地检查传递给eval()函数的表达式是否正确吗?捕获错误:
try {
eval(exp);
} catch (e) {
if (e instanceof SyntaxError) {
alert(e.message);
}
}
您可以尝试动态地将脚本的内容放入“script”标记中,然后检查error函数的返回。或者在脚本末尾定义一个变量,并在执行后检查它是否存在
或者也许你可以在这里找到答案: 尝试捕捉错误?使用
try
/catch
,它用于处理抛出的错误如果
/else
用于检查布尔条件。为什么OP需要这个而不是简单的try catch
?谢谢你的回答,它确实解决了我的问题。