在JavaScript文件开头使用分号、感叹号或加号有什么区别?

5
在JavaScript文件中,我看到了这三种形式:
;(function() {
    // content ...
}());

并且

!function() {
    // content ...
}();

或在Bootstrap的js文件中:

+function() {
    // content ...
}();

我认为 ;, !, 或者 + 的作用是在多个文件连接在一起时,可以将其与前一个文件的内容分隔开来。
使用 ;, !, 或者 + 有什么区别?哪种方法更好?

2
并不完全是一个精确的重复,因为它涉及到“;”、“!”和“+”之间的比较。 - nonopolarity
这是一个与之前不同的问题,不是重复的。 - Paolo
1个回答

2
;(function() {
    // content ...
}());

分号终止一个空语句,接着是一个常规的IIFE。这没有实际效果,但可能有用作为一种符号表示。
!function() {
    // content ...
}();

感叹号会使其后面的语句被视为表达式。参见:函数前的感叹号有什么作用。这是一种比IIFE更短的表达方法,节省了1个字节。
+function() {
    // content ...
}();

非常类似于感叹号版本,它们都会导致以下语句被解释为表达式。区别在于如何处理表达式的结果。加号(+)将其转换为数值,感叹号(!)将值取反。在两种情况下,结果都被丢弃 - 它们实际上是相同的。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接