我有一个缩小/打包的javascript文件导致问题。问题是非打包输入文件有一些缺少的分号某处在换行时不是问题,但是当文件打包时,换行符会被删除并导致解析器错误。例如:
//input
var x = function() {
doSomething();
} // note: no semicolon
var y = 'y';
//----
// output
var x=function(){doSomething();}var y='y';
// error here: ^
奇怪的是,当我对输出文件进行替换以用分号和新行替换所有分号时,该文件可以正常工作!这使得很难找到错误,因为AFAIK,我想不出任何情况下分号后的换行应该改变什么。关于为什么要做这个替换的任何想法会使它起作用?
答案 0 :(得分:5)
呃......你试过JSLint吗?
答案 1 :(得分:3)
当有换行符时,会出现隐含的分号。
答案 2 :(得分:2)
使用jslint检查您的代码。如果你这样做,并通过分号,它应该正确包装。
在JavaScript中,在换行符中隐式添加分号。这引入了可能含糊不清的情况。这篇博文:http://robertnyman.com/2008/10/16/beware-of-javascript-semicolon-insertion/简洁地描述了这个问题并给出了一个例子。
答案 3 :(得分:1)
JSlint是一个很好的解决方案。此外,一些代码编辑会为您找到这些类型的错误。如果我没记错的话,NetBeans会在您键入时实时捕获这些内容。我相信Komodo和Aptana也一样。