我有一个textarea,用户可以输入javascript代码,按下该按钮后将传递给eval()。
当用户输入以下内容时,我无法捕获referenceError:
var myName = Maria;
而不是
var myName = "Maria";
谢谢你的时间!
答案 0 :(得分:14)
好的,正如你所说,你理解eval()
的坑,我在这里提出一个解决方案。
try {
var myName = Maria;
} catch (e) {
if (e instanceof ReferenceError) {
// Handle error as necessary
}
}
答案 1 :(得分:3)
尝试在eval()调用周围加try/catch block。像这样:
try {
eval(userInput);
} catch (e) {
// do something
}
(请注意,出于安全原因,将用户输入传递给eval()是 NOT 您应该在真实网站上执行的操作。)