如果 eval() 无法计算给定的字符串,则显示 "Syntax Error"

Show "Syntax Error" if eval() can not evaluate a given string

我正在构建一个使用 HTML、CSS 和 Javascript 制作简单计算器的小项目。 我正在使用 eval 函数。我想拥有 Math ErrorSyntax Error 这两个功能,就像真正的计算器一样,我已经成功添加了 Math Error 功能,但我无法添加语法错误。 所以问题是, 如果我这样做:

var a = "2+2";
alert(eval(a));

显示正确答案:4。 但如果我这样做:

var a = "2++2";
alert(eval(a));
或者这个:

document.write(eval(a));

然后 eval 函数没有执行,屏幕上什么也没有显示。 它在控制台上显示了这一点。

Uncaught SyntaxError: Invalid left-hand side expression in postfix operation

但我希望它在屏幕上只显示“语法错误”。

使用 try/catch 块捕获 eval 抛出的异常,并在错误对象上使用 .name 仅打印其 class 名称。在这种情况下,它是 SyntaxError

var a = "2++2";
try {
    alert(eval(a));
} catch (e) {
    console.error(e.name);
}
您还可以通过简单地检查 e.name 并打印任何您想要的内容来对不同的错误(以及自定义错误消息)进行自定义处理。

请注意,console.error 打印到 stderr,而不是通常从 console.log 打印的 stdout。如果需要,您可以更改它。