最近在webstorm上,利用yuicompressor對js文件進行壓縮,總是報錯缅糟,今天解決挺智,總結如下。
html代碼引用未壓縮的代碼時窗宦,并未出現(xiàn)任何報錯赦颇,功能運行也沒有問題,但是一旦使用yuicompressor對其進行壓縮赴涵,就會有數(shù)行錯誤出現(xiàn)媒怯,其中第一行錯誤是:missing name after . operator。
是什么原因呢髓窜?
主要原因出自以下代碼中使用了delete:
this.delete=function(list,index) {
? ? ? ? ? ? list.splice(index,1);
};
delete在ECMAscript中為關鍵字扇苞,因此在壓縮之后,無法識別函數(shù)名delete寄纵,這導致之后爆了很多相關的錯誤鳖敷。與此類似,很多時候擂啥,我們會錯誤的使用一些reserved keywords(保留關鍵字)哄陶,例如,interface,這樣也會報類似的錯誤哺壶。
一些常用關鍵字屋吨,摘抄如下,
Keyword : ?break ?else ? new ? ?var ? case ?finally? ? return? ? ? void ? catch? ? ? for ? switch? ? ? while ?continue? ? function? ? this ? with?default? ? if ? ?throw ? delete? ? ? in? ? ? ? ? try ?do? ? ? ? ? instanceof? typeof
FutureReservedWord : abstract? ? enum ? int ? ?short ?boolean ? export? ? ? interface? static?byte ? ?extends? ? long ? ? super?char? ? ? ? final? ? ? native? ? ? synchronized?class ? ?float package ?throws?const ? ? goto ? ?private ? transient?debugger? ? implements? protected? volatile?double ? import ? ?public
參考文章:
http://lists.evolt.org/pipermail/javascript/2005-October/009767.html
http://www.myexception.cn/web/1658623.html