从 JSMin 缩小文件中删除换行符并在 IF 条件下解析错误
我正在尝试使用 php 和 JSMin 动态缩小 javascript 文件。 一切工作正常,但是当我尝试删除换行符时,
$jsMinifiedClean = str_replace( array("\r","\n"),"",$jsMinified);
我收到 javascript 解析错误。 在代码中快速搜索后,我发现了问题:
if( condition ) statement
else statement;
“if”条件在行尾没有“;”。
为什么使用手动 YUI 压缩代码时我没有得到错误? if 末尾真的必须使用分号来避免 JSMin 压缩时出现问题吗?
I'm trying to minify on the fly a javascript file with php and JSMin.
Everything works fine, but when I try to remove newlines
$jsMinifiedClean = str_replace( array("\r","\n"),"",$jsMinified);
I get a javascript parse error.
After a quick search in the code I found the problem:
if( condition ) statement
else statement;
The "if" condition doesn't have the " ; " at the end of the line.
Why with a manual YUI compression of the code I get no error?
Is the semicolon really mandatory at the end of the if to avoid the problem in compressing with JSMin?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
如果您删除换行符,那就是这样。默认情况下,JSMin 不会删除换行符,正是因为这个原因,可怕的是 自动分号插入。从 JSMin 页面:
如果您随后删除换行符,您需要自己确保换行符不会因为 ASI 而变得重要。
It is if you remove the newline. By default, JSMin does not remove the newline for exactly this reason, the horror that is automatic semicolon insertion. From the JSMin page:
If you then remove the newline, you're taking it upon yourself to be sure that the newline isn't significant because of ASI.