1

例如,我有一大块包含许多逗号运算符的 javascript

"i".toString(), "e".toString(), "a".toString();

JavaScript有没有办法将这些转换为分号?

"i".toString(); "e".toString(); "a".toString();
4

1 回答 1

2

这似乎是一个逃避的答案......但我建议不要尝试它。做任何类型的字符串操作来改变它几乎是不可能的。除了函数定义参数列表之外,您还需要跳过字符串文字或正则表达式文字或函数调用或数组文字或对象文字或变量声明中的文本......甚至更多。正则表达式无法处理它,打开和关闭你看到关键字无法处理它。

如果你想实际转换这些,你真的必须实际解析代码并找出哪些是逗号运算符。此外,在某些情况下,逗号的存在可能是相关的:

var a = 10, 20;

不一样

var a = 10; 20;

例如。

所以我真的认为你不应该尝试。但是,如果您确实愿意,我会先搜索一个 javascript 解析器(或编写一个解析器,这并不是非常难,但它可能需要一天的大部分时间,并且可能仍然存在问题)。我很确定像谷歌这样的更高级的缩小器包括一个解析器,也许他们的来源会有所帮助。

然后,您解析它以找到实际的逗号表达式。如果使用返回值,请不要理会它。如果没有,请继续用表达式语句替换它们,然后重新生成源代码字符串。此时您也可以继续根据范围缩进对其进行格式化。它可能最终看起来相当不错。这只是一个相当大的工作量。

这是一个用 JS 编写的解析器库:http : //esprima.org/(感谢@torazaburo 的评论)

于 2014-11-22T04:41:56.507 回答