7el*_*ant 98 javascript jquery
在JavaScript中使用自调用函数之前使用分号有什么好处.我在几个流行的jQuery插件中看到了这种方法,我很想知道这是否是我不知道的JavaScript中的下一个很棒的东西.先谢谢你们!
amo*_*ebe 162
如果将两个文件与自调用函数连接在一起,如下所示:
文件A:
(function(){...A...})()
Run Code Online (Sandbox Code Playgroud)
档案B:
(function(){...B...})()
Run Code Online (Sandbox Code Playgroud)
文件A + B:
(function(){...A...})()(function(){...B...})()
Run Code Online (Sandbox Code Playgroud)
你有两个没有分隔符的语句.当您将文件合并在一起然后缩小它们时会发生这种情况.
现在,文件B的作者在前面加了一个分号:
档案B2:
;(function(){...B2...})()
Run Code Online (Sandbox Code Playgroud)
你会得到一个有效的脚本:
(function(){...A...})();(function(){...B2...})()
Run Code Online (Sandbox Code Playgroud)
Mik*_*uel 28
自调用函数被括号括起来,并且在JavaScript中括号被重载为含义
(x + y) * zf()在函数前面加一个分号可以防止函数在括号与函数应用程序混淆时变成前面的参数.
考虑
var x = 42
(function () { ... })()
Run Code Online (Sandbox Code Playgroud)
是相同的
var x = 42(function () { ... })()
Run Code Online (Sandbox Code Playgroud)
但
var x = 42
;
(function () { ... })()
Run Code Online (Sandbox Code Playgroud)
是相同的
var x = 42;
(function () { ... })()
Run Code Online (Sandbox Code Playgroud)
小智 12
我以无分号的方式编写所有 JavaScript.由于自动分号插入(ASI),在每行末尾没有分号的情况下写入时,有一些特殊情况首先会"混淆":
开始与操作者一个顶级表达式,一个((开括号)在这种情况下,像大多数其他运营商,可以继续以前的表达,从而抑制"分号的自动插入".(这通常仅在使用自调用函数时发生.)
开玩笑说#2:没有人!(只学习一条规则,你也可以享受没有额外分号的生活;-)
因为我以无分号的方式编写,所以我总是把它写成(函数表达式自然可以跨越多行):
;(FunctionExpression)()
Run Code Online (Sandbox Code Playgroud)
在我的情况下,它不是关于"安全"或试图"发现错误"(老实说,如果你的风格是使用分号并且你忘记了分号,那么你已经在其他地方创建了错误并且写了一;开始"安全"是hogwash).没有; 在我的情况下,它是为了与我所选择的风格的知识保持一致并且"知道" 与操作员开始一行可以继续前一行的表达.
请参阅JavaScript:分号插入(您需要了解的所有内容)以获取详细信息(这是迄今为止我在该主题上看到的最佳文章).
快乐的编码.