我正在建立一个使用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/