在线文档教程

帮助阅读 | Helpful reading

有用的阅读

一个有用的视频:

今天使用的所有流行的代码缩小器都使用基于 AST 的缩小,因此它们可以处理没有分号的 JavaScript 而没有任何问题(因为 JavaScript 中不需要分号)。

Excerpt from "An Open Letter to JavaScript Leaders Regarding Semicolons":

[依赖于自动分号插入]是非常安全的,并且是每个浏览器都能理解的完全有效的JS。Closure编译器,yuicompressor,packer和jsmin都可以正确地缩小它。任何地方都没有性能影响。我很抱歉,这个语言社区的领导者没有教育你,而是给了你谎言和恐惧。那是可耻的。我建议学习JS中的语句实际上是如何终止的(在这种情况下它们不会被终止),这样你就可以编写你觉得很漂亮的代码。通常,\n结束声明,除非:

  • 该语句具有未闭合的 paren,数组文字或对象文字,或以某种其他方式结束,这不是结束语句的有效方式。(例如,以.或结尾,

第一个很明显。甚至JSLint也可以使用\nJSON中的字符和带括号的构造,以及var跨越多行的语句,。第二个是超级奇怪。我从来没见过你想要写的一个案例(在这些类型的对话之外)i\n++\nj,但是,事实上,这被解析为i; ++j,而不是i++; j。第三是很好理解,如果一般被鄙视。if (x)\ny()相当于if (x) { y() }。构造在到达块或语句之前不会结束。 ;是一个效的JavaScript语句,所以if(x相当于if(x){}或者,“如果是x,则不执行任何操作。”这更常用于循环检查也是更新功能的循环。不寻常,但并非闻所未闻。第四种情况通常是引起反响的“哦,不,你需要分号!”的情况。但是,事实证明,如果你不认为它们是前一行的延续,那么用分号为这些行添加前缀很容易。例如,而不是:foo(); [1,2,3] .forEach(bar); 你可以这样做:foo(); [1,2,3] .forEach(bar)优点是,一旦你习惯于从未看到以半成品开头(或[半成品的行,前缀就更容易被注意到。