2011-09-29 53 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的不顯著。