javascript - 如果eval()无法评估给定的字符串,则显示 “Syntax Error”

标签 javascript syntax-error eval calculator

我正在建立一个使用HTML,CSS和Javascript制作一个简单计算器的小项目。
我正在使用评估函数。我想像真正的计算器一样具有数学错误语法错误的两个功能,并且我已经成功添加了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 仅打印其类名。在这种情况下,它是SyntaxError

var a = "2++2";
try {
    alert(eval(a));
} catch (e) {
    console.error(e.name);
}

您还可以通过简单地检查e.name并打印所需的内容,对不同的错误(以及自定义错误消息)进行自定义处理。
请注意,console.error会打印为stderr,而不是stdout中的常用console.log。您可以根据需要更改此设置。

关于javascript - 如果eval()无法评估给定的字符串,则显示 “Syntax Error”,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65467591/

相关文章:

javascript - 为什么这个 Javascript 在 IE 中不起作用

python - 如何修复 discord bot 中的 "SyntaxError: invalid syntax"

ruby-on-rails - Ruby block 语法错误

Python eval 表示包含网络路径(反斜杠)、奇怪行为或预期的字典的字符串?

javascript - 本地文本文件中的 jquery 自动完成功能未获取

javascript - 在extjs4.2中保存后禁用按钮

javascript - EmberJS 使用 View 处理 DOM 事件

ffmpeg - 将视频的两半与图像连接起来的问题

php - 我应该使用 eval() 还是 call_user_func()?

bash - 我可以让 shell 别名评估历史替换命令吗?