javascript - (...()) 与 javascript 闭包中的 (...)()

标签 javascript comparison closures anonymous-function jslint

<分区>

我知道这很愚蠢,但这之间有任何区别:

(function() {  
    var foo = 'bar';  
})();

还有这个?

(function() {  
    var foo = 'bar';  
}());

JSLint告诉我们将调用移动到包含函数的括号中,但我认为没有必要。

编辑:答案太酷了。 ~函数JSHint替代方案以及 jQuery 对 (/***/)(); 的偏好和 Crockford 的解释!我以为我只会得到一个“他们是同一回事”之类的答案。
你们通过投票决定最好的,我打勾。

最佳答案

没有区别。这两种方法都是让 JavaScript 解析器将您的函数视为表达式而不是声明的有效方法。

请注意 +! 也可以工作,并且有时被缩小器用来保存字符大小:

+function() {  
    var foo = 'bar';  
}();

!function() {  
    var foo = 'bar';  
}();

编辑

正如@copy 指出的那样,为了完整性,~- 也可以工作。

-function() {  
    var foo = 'bar';  
}();

~function() {  
    var foo = 'bar';  
}();

关于javascript - (...()) 与 javascript 闭包中的 (...)(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14241380/

相关文章:

javascript - 滚动到顶部 jquery

java - 比较两个链表中的内容

c++ - 是四舍五入进行float-double比较的正确方法

javascript - 如何使用 jquery 将可变参数传递给匿名函数?

c# - 在 for 循环中用匿名方法闭包

Javascript 不能在除 IE 之外的任何其他浏览器中运行。为什么?

javascript - 在更改事件处理程序中(重新)渲染 Backbone View 不起作用

javascript - @单击复选框添加/删除数据

Python csv逐个单元迭代以找出更大的值并对行执行删除

javascript - 闭包和 ES2015