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)
我发现 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)。