JavaScript库中的主要分号是什么?

在几个JavaScript库中,我从一开始就看到了这个符号:

/** * Library XYZ */ ;(function () { // ... and so on 

尽pipe我对“立即执行的函数”语法很满意

 (function(){...})() 

我想知道什么是领先的分号。 我能想出的是,这是一种保险。 也就是说,如果图书馆是embedded在其他错误的代码中,则作为“最后的声明在最后结束”这种速度颠簸。

它有没有其他的function?

它可以让你安全地连接几个JS文件到一个,更快地作为一个HTTP请求。

最好的答案实际上是在这个问题上给出的,所以为了清楚起见,我只是在这里写下来:

领先; 在立即调用的函数expression式之前是为了防止在连接期间将文件附加到包含不正确以a ;

最佳做法是用分号终止您的expression式,但也使用前导分号作为安全措施。

一般来说,如果一个语句以(,[,/,+或 – ]开始,那么它有可能被解释为前面语句的延续。以/,+和 – 开始的语句在实践中是相当罕见的,但是以(和)开头的语句至less在一些JavaScript编程风格中并不less见,有些程序员喜欢在任何这样的语句的开始部分加上防御性的分号,这样即使语句在修改之前,删除以前的终止分号:

 var x = 0 // Semicolon omitted here ;[x,x+1,x+2].forEach(console.log) // Defensive ; keeps this statement separate 

资源:

Javascript权威指南第6版

当你缩小js代码时,它是很好的。 防止意外的语法错误。

这被称为前导分号。

它的主要目的是保护自己免受不正确closures的前面的代码,这可能会导致问题。 分号可以防止这种情况发生。 如果前面的代码不正确地closures,那么我们的分号就会纠正这个问题。 如果正确closures,那么我们的分号将是无害的,不会有副作用。