JavaScript 库中的前导分号有什么作用?

2022-08-30 02:10:52

在几个JavaScript库中,我一开始就看到了这种表示法:

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

虽然我对“立即执行的函数”语法非常满意

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

我想知道前导分号是做什么用的。我能想到的只是它是一种保险。也就是说,如果库嵌入在其他有缺陷的代码中,它就会充当“最后一个语句最晚在这里结束”的减速带。

它有任何其他功能吗?


答案 1

它允许您安全地将多个JavaScript文件连接成一个,以更快地将其作为一个HTTP请求提供。


答案 2

最好的答案实际上是在问题中给出的,所以为了清楚起见,我将把它写在这里:

在立即调用的函数表达式前面的前导符是为了防止在串联期间将文件追加到包含未正确以 .;;

最佳做法是用分号终止表达式,但也使用前导分号作为保护措施。