在运行jQuery.globalEval()或eval()之前,请检查JavaScript(jQuery)代码的语法

在运行jQuery.globalEval()或eval()之前,请检查JavaScript(jQuery)代码的语法,javascript,jquery,Javascript,Jquery,继续主题: 我使用jQuery.globalEval(varwithJScode) 现在,当varwithJScode中的代码包含语法或其他错误时,问题就开始了——整个脚本停止 JSFIDLE不支持jQuery.globalEval(),但我使用eval()来模拟 尝试将var codeforeval更改为错误的javascript代码,下一个命令将失败 有没有办法避免其他JS代码在出现错误时停止运行和/或有没有办法在求值之前检查语法 尝试使用此选项: try { jQuery.glob

继续主题:

我使用jQuery.globalEval(varwithJScode)

现在,当varwithJScode中的代码包含语法或其他错误时,问题就开始了——整个脚本停止

JSFIDLE不支持jQuery.globalEval(),但我使用eval()来模拟

尝试将var codeforeval更改为错误的javascript代码,下一个命令将失败

有没有办法避免其他JS代码在出现错误时停止运行和/或有没有办法在求值之前检查语法

尝试使用此选项:

try {
   jQuery.globalEval(jscode);
} catch (e) {
   if (e instanceof SyntaxError) {
      alert('JS error!');
   }
}

不适合我

做这么简单的事情不需要一个繁重的jQuery

            try {
                jQuery.globalEval(data.js);
            } catch(e) {
                console.log(e);
            }
只需将
eval
赋值给一个变量,然后调用它

    try{
         var globalEval = eval;
         globalEval(jscode);   //execute in global scope
    } catch(e) {
         alert(e);
    }

jsfiddle支持jQuery,您只需选择左边的jQuery库…@DidierGhys:为什么您认为我没有这样做?jsfiddle允许我使用
.globalEval()
,当我从您链接的另一个问题的已接受答案中尝试时,没有任何问题。这一个也用了try/catch:@nnnnnn:有趣。我在jsfiddle上尝试了很多次globalEval(),直到我将它改为eval(),它才起作用。我永远不会忘记选择jQuery框架。解决方案实际上是删除(SyntaxError的instanceof)并从代码中只保留(e)。谢谢我已创建了,无法以任何方式复制结果。请注意,如果您有window.onerror处理程序,则在此评估中遇到错误时将调用该处理程序。您可以将null临时分配给window.onerror以避免此情况(之后恢复window.onerror)。当然,应尽可能避免以任何形式使用eval。