我有一大堆javascript,有很多comma operators,例如
"i".toString(), "e".toString(), "a".toString();
有没有办法用JavaScript将这些转换为分号?
"i".toString(); "e".toString(); "a".toString();
答案 0 :(得分:1)
这可能看起来像是一个警察的答案......但我建议不要尝试它。做任何类型的字符串操作来改变它几乎是不可能的。除了函数定义参数列表之外,您还需要跳过字符串文字或正则表达式文字或函数调用或数组文字或对象文字或变量声明中的文本....甚至可能更多。当你看到关键字无法处理它时,正则表达式无法处理,打开和关闭。
如果你想真正转换它们,你真的必须实际解析代码并找出哪些是逗号运算符。此外,在某些情况下,逗号的存在是相关的:
var a = 10, 20;
与
不同var a = 10; 20;
例如。
所以我真的不认为你应该尝试一下。但是如果你想这样做,我首先要搜索一个javascript解析器(或者写一个,这不是很难,但它可能需要一天中的大部分时间并且可能仍然是错误的)。我很确定像谷歌这样的更高级的缩放器包括一个解析器,也许它们的来源会有所帮助。
然后,您解析它以查找实际的逗号表达式。如果使用返回值,请不要管它。如果没有,请继续使用表达式语句替换它们,然后重新生成源代码字符串。您也可以继续根据范围缩进进行格式化。它可能最终看起来很不错。这只是一大笔工作。
这是一个用JS编写的解析器库:http://esprima.org/(感谢@torazaburo的评论)