在 JavaScript 开头以分号开头的目的是什么?

IT技术 javascript jquery
2021-02-11 00:26:52

可能的重复:
JavaScript 库中的前导分号有什么作用?

我注意到很多 jQuery 插件都是以

;(function(){ /* something in here */ })();

我只是想知道开头的分号是什么,以及末尾的空括号是什么。

2个回答

分号在那里,以防您在一些“坏”脚本之后包含此脚本,这些脚本没有用分号正确关闭其最后一行。在这种情况下,这两个脚本可能会组合在一起并导致无效代码。例如,如果您将多个脚本合并为一个响应。

最后的 () 正在执行函数。这是在创建一个闭包。私有变量和方法可以在这个函数的范围内声明,不能从脚本外部访问。

这与“坏”脚本无关——它与以无分号风格书写有关。
2021-03-18 00:26:52
恕我直言,这是“坏”脚本。
2021-03-20 00:26:52
@James Gaunt 我编写了无分号的 Javascript。我还没有找到一个很好的理由用分号(这个特殊的情况下,如果一个行以(是使用一个理由;,以确保前面的语句被终止)。说“坏”是不公平的——尽管很受欢迎——判断正在通过。如果组合多个脚本文件(或最小化代码)的工具破坏了 Javascript,那么它是错误工具,而不是“坏”脚本。
2021-03-28 00:26:52
@pst - 在此链接中始终使用分号有很多充分的理由:stackoverflow.com/questions/444080/...
2021-04-03 00:26:52
@太平洋标准时间。很公平。我相信你可以按照自己的风格编写代码。事实上,最佳实践是主观的。您的陈述“一旦知道何时以分号开始一行的规则......”揭示了为什么总是使用分号是最佳实践。因为那样你就不需要知道这些额外的规则,希望其他人都知道。如果我们一直都有完美的知识,我们就可以用二进制编程,但我们没有。最佳实践可以帮助我们。当然,您是否选择遵循它取决于您。
2021-04-07 00:26:52

这个构造:

(function(){ /* something in here */ })()

用于在 Javascript 中创建新范围。

关于函数作用域的更多信息在这里。

关于分号,我以前从未见过。我认为这是连接多个脚本时的安全性,因为在某些情况下,分号在文件末尾是可选的。

2021-04-09 00:26:52