自调用函数之前的分号?

2022-08-30 05:37:58

在 JavaScript 中,在自调用函数之前使用分号有什么好处?我在几个流行的jQuery插件中看到了这种方法,我很好奇这是否是我不知道的JavaScript中下一个令人敬畏的事情。


答案 1

如果将两个具有自调用函数的文件连接在一起,如下所示:

文件 A:

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

文件 B:

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

文件 A+B:

(function(){...A...})()(function(){...B...})()

您有两个不带分隔符的语句。当您将文件放在一起,然后将其缩小时,就会发生这种情况。

现在,文件 B 的作者在前面放了一个分号:

文件 B2:

;(function(){...B2...})()

你会得到一个工作脚本:

(function(){...A...})();(function(){...B2...})()

答案 2

自调用函数被括号括起来,在 JavaScript 中,括号被重载为

  1. 对表达式进行分组以覆盖优先级:(x + y) * z
  2. 功能应用:f()

在函数之前放置分号可防止函数在括号与函数应用程序混淆时成为其前面的任何内容的参数。

考虑

var x = 42

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

与 相同

var x = 42(function () { ... })()

var x = 42

;

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

与 相同

var x = 42;

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