2011-09-29 54 views
0

删除换行符我试图来缩小与PHP和JSMin飞了一个JavaScript文件。 一切工作正常,但是当我尝试删除换行符从JSMin精缩文件,并分析错误的IF条件

$jsMinifiedClean = str_replace(array("\r","\n"),"",$jsMinified); 

我得到一个JavaScript解析错误。 在代码中快速搜索后,我发现了问题:

if(condition) statement 
else statement; 

的“如果”条件不具备“;”在该行的末尾。

为什么用手工YUI压缩代码我没有得到任何错误? 如果要避免使用JSMin进行压缩的问题,分号在结尾处是否真的是强制的?

回答

1

如果避免使用JSMin进行压缩时出现问题,分号确实是必须的吗?

是,如果你删除的换行符。默认情况下,JSMin确实而不是正是由于这个原因删除换行符,恐怕是automatic semicolon insertion。来自JSMin page

由于换行符有时被视为分号,所以省略换行符会更保守。如果它先于非ASCII字符或一个ASCII字母或数字,或这些字符中的一个不省略换行:

\ $ _ { [ (+ - 

,并且如果它遵循一个非ASCII字符或一个ASCII字母或数字或之一这些字符:

\ $ _ } ]) + - " ' 

如果随后删除换行,你把它当自己是确保换行符是因为ASI的不显著。