在js中捕获referenceError

jac*_*bdo 8 javascript referenceerror

我有一个textarea,用户可以输入javascript代码,按下按钮后将传递给eval().

当用户输入如下内容时,我无法捕获referenceError:

var myName = Maria;
Run Code Online (Sandbox Code Playgroud)

代替

var myName = "Maria";
Run Code Online (Sandbox Code Playgroud)

谢谢你的时间!

Sur*_*tta 20

好吧,正如你所说,你了解了这个问题eval(),我在这里提出一个解决方案.

try {
    var myName = Maria;
} catch (e) {
    if (e instanceof ReferenceError) {
        // Handle error as necessary
    }
}
Run Code Online (Sandbox Code Playgroud)


ecr*_*345 5

尝试在 eval() 调用周围放置一个try/catch 块。像这样:

try {
    eval(userInput);
} catch (e) {
    // do something
}
Run Code Online (Sandbox Code Playgroud)

(请注意,出于安全原因,将用户输入传递给 eval()不是您应该在真实站点上执行的操作。)