检查/验证javascript语法的简单方法

fil*_*nov 6 javascript syntax jslint jshint

我有一些大的不同的javascript-snippets(几千),其中一些在语法上有一些愚蠢的错误(如不匹配的大括号/引号,javascript中的HTML,变量名称中的拼写错误).

我需要一种简单的方法来检查JS语法.我已经尝试过JSLint,但它发送了太多关于样式,变量定义方式等的警告(即使我关闭了所有标志).我不需要找出样式问题,或者提高javascript质量,我只需要找到明显的语法错误.当然我可以在浏览器/浏览器控制台中查看它,但我需要自动执行它,因为该片段的数量很大.

添加:
JSLint/JSHint在行中报告了许多问题,这些问题不是"美"但是有效(即有一些潜在问题),并且看不到真正的问题,普通编译器只会报告语法错误并停止执行.例如,尝试JSLint代码,该代码在第4行(不匹配的引号),第6行(需要逗号)和第9行(意外的<script>)上有语法错误.

document.write('something');
a = 0;
if (window.location == 'http://google.com')  a = 1;
document.write("aaa='andh"+a+"eded"');
a = {
  something: ['a']
  something2: ['a']
};
<script>
a = 1;
Run Code Online (Sandbox Code Playgroud)

fil*_*nov 1

我发现 SpiderMonkey 能够编译脚本而不执行它,如果编译失败 - 它会打印错误。

所以我刚刚为 SpiderMonkey 创建了小包装

sub checkjs {
    my $js = shift;
    my ( $js_fh, $js_tmpfile ) = File::Temp::tempfile( 'XXXXXXXXXXXX', EXLOCK => 0, UNLINK => 1, TMPDIR => 1 );
    $| = 1;
    print $js_fh $js;
    close $js_fh;
    return qx(js -C -f $js_tmpfile 2>&1);
}
Run Code Online (Sandbox Code Playgroud)

对于我来说,javascriptlint.com 的处理也非常好。(感谢@rajeshkakawat)。