从 JSMin 缩小文件中删除换行符并在 IF 条件下解析错误

发布于 2024-12-07 05:58:43 字数 366 浏览 0 评论 0原文

我正在尝试使用 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 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

瞎闹 2024-12-14 05:58:43

if 末尾是否真的必须使用分号来避免 JSMin 压缩时出现问题?

如果您删除换行符,那就是这样。默认情况下,JSMin 不会删除换行符,正是因为这个原因,可怕的是 自动分号插入。从 JSMin 页面

省略换行符更为保守,因为换行符有时被视为分号。如果换行符位于非 ASCII 字符或 ASCII 字母或数字或以下字符之一之前,则不会省略:

<前><代码>\ $ _ { [ ( + -

如果它跟随一个非 ASCII 字符或一个 ASCII 字母或数字或这些字符之一:

<前><代码>\ $ _ } ] ) + - " '

如果您随后删除换行符,您需要自己确保换行符不会因为 ASI 而变得重要。

Is the semicolon really mandatory at the end of the if to avoid the problem in compressing with JSMin?

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:

It is more conservative in omitting linefeeds, because linefeeds are sometimes treated as semicolons. A linefeed is not omitted if it precedes a non-ASCII character or an ASCII letter or digit or one of these characters:

\ $ _ { [ ( + -

and if it follows a non-ASCII character or an ASCII letter or digit or one of these characters:

\ $ _ } ] ) + - " '

If you then remove the newline, you're taking it upon yourself to be sure that the newline isn't significant because of ASI.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文