使用 JavaScript 检查 JavaScript 语法?

2 javascript eval syntax-checking

像我这样的突击队员如何使用一些 JavaScript 内置方法(如果有!)或任何其他可能的方式检查输入的代码是否是有效的 JavaScript 源?(类似于 NetBeans、Eclipse 等各种 IDE 中的预解析器)?

我必须检查代码是否正常,然后 window.eval()-it 到当前文档实例。

sv_*_*_in 5

假设您需要检查代码是否不会抛出任何语法错误,以下是我的解决方案:

var code = "asdfsd = 1";

try {
    (function(){
        new Function(code);
    })()
}
catch(e) {
    alert('error');
}
Run Code Online (Sandbox Code Playgroud)

工作示例: http: //jsfiddle.net/5NpGa/

  • `new Function(string)` 是变相的 `eval`。 (2认同)
  • 他们有他们的分歧。例如,“new Function(str)”不会影响作用域中的变量。http://stackoverflow.com/questions/4599857/is-eval-and-new-function-the-same-thing (2认同)
  • 此外,据我了解,他的需要是检查代码是否有效,而不是检查代码是否遵循编码实践。 (2认同)
  • 请注意,建议的解决方案中的“catch”仅在运行时错误的情况下才会被触发(例如变量“asdfsd”未定义)。但该代码在语法上仍然有效。`asdfsd = 1 1`(注意 1 之间的空格)不会被捕获。 (2认同)