从几周开始,我在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简化器的高质量和成熟度,我会遵循让你的团队最快乐的编码风格。