小编典典

(…())与(…)()在javascript闭包中[重复]

javascript

我知道这很愚蠢,但这之间有什么区别:

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

和这个?

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

JSLint告诉我们Move the invocation into the parens that contain the function,但是我认为没有必要。

编辑:
答案太酷了。~function,JSHint替代品,以及jQuery的偏好(/***/)();和Crockford的解释!我以为我只会得到“他们是同一件事”的答案。


阅读 340

收藏
2020-05-01

共1个答案

小编典典

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

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

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

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

编辑

正如@copy指出的那样,出于完整性考虑,它~-将起作用。

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

~function() {  
    var foo = 'bar';  
}();
2020-05-01