在 JavaScript 中,当必须缩小文件时省略分号是否安全?



从几周开始,我在JavaScript文件中省略了分号。我今天意识到如果文件被缩小可能会导致问题。

我阅读了以下资源:

  • https://www.reddit.com/r/javascript/comments/3ykv0w/is_it_actually_true_that_minifiers_break_js_code/
  • https://github.com/mrclay/minify/issues/396
  • https://github.com/github/fetch/issues/420

有两种观点:

  • 如果一个工具处理了一个有效的javascript文件,并将其变成了一个不起作用的javascript文件,那么该工具就不能兑现其"不改变其功能"的承诺。
  • 由于省略分号会阻止文件被缩小,因此必须添加分号。

在一般情况下,最好的选择是什么?我的意思是"一般情况",源代码应该是通用的,并且由任何缩小器缩小。

不应该引起问题,只要缩小器中没有错误。

这是因为没有分号的 JavaScript 代码是完全有效的、可解析的 JavaScript。

这可以准确且可重复地缩小。

不会涉及"猜测" - 只涉及基于规范的明确定义的确定性解析算法。

以前在与 ASI 相关的缩小器中发现了错误。

因此,根据缩小器的成熟度,遇到此类错误的风险可能会增加。

也就是说,以前在与 ASI 无关的缩小器中也发现了错误,因此无论您是否使用分号,您的简化器都会带来问题的风险。

考虑到所有这些,以及JavaScript简化器的高质量和成熟度,我会遵循让你的团队最快乐的编码风格。

相关内容

最新更新