1

IE7 不接受 JavaScript 对象文字中的尾随逗号作为有效的 JavaScript 语法:

var a = {
  foo: 12,
  bar: 13,//this is ok in all browsers except ie7
};

目前我处理这个问题的方法是使用 IE7 打开我的网站并使用控制台查找无效的 js 文件。

您知道如何使用 UNIX 命令行在 javascript 文件中定位(甚至更好地删除)尾随逗号吗?

我试图 grep 这些逗号,但需要多行正则表达式。我还用谷歌搜索了这个主题,没有发现任何有用的东西。

4

3 回答 3

4

JSHint可以为您找到这些。您可以下载它并从命令行运行它。它还可以为您检查许多有用的附加功能(以及关闭您不想要的功能的选项)。

于 2012-07-03T10:50:54.143 回答
2

您可以编写一个脚本来为您执行此操作:

$ cat 1.pl 
local $/;

my $data = <>;
$data =~ s@,(\s*)((?://.*?\n)?)(\s*)}@ $1$2$3}@msg;
print $data;

$ cat 1.txt 
var a = {
  foo: 12,
  bar: 13, //this is ok in all browsers except ie7
};

var b = {
  foo: 14,
  bar: 15,
};

$ perl -i 1.pl 1.txt

$ cat 1.txt 
var a = {
  foo: 12,
  bar: 13  //this is ok in all browsers except ie7
};

var b = {
  foo: 14,
  bar: 15 
};
于 2012-07-03T10:57:01.297 回答
2

它并不完美,但它可以定位文件(它不是打印行):

find -name '*.js' -exec grep -Pzl ",\s*\n+(\s*\/\/.*\n)*\s*[\}\)\]]" {} \;

答案部分取自这个问题:

需要用于多行搜索的正则表达式(grep)

附言

肯定有这样一个缺陷:

// whatever is done next,
}

它将被报告为尾随昏迷,而事实并非如此。

于 2012-11-28T18:11:33.270 回答