0

我是 JavaScript 模块的新手。我为此阅读了很多文章,发现模块是通过以下两种不同的方式定义的:

// '()' after module close
var firstModule = (function() {
  // Module defination goes here
})();

// '()' before module close
var secondModule = (function() {
  // Module definition goes here
}());

我都尝试了,但没有发现任何区别。

请回答两者之间有什么区别,在这种情况下我们必须使用哪种类型的声明?

4

1 回答 1

2

在实践中没有区别。这只是偏好,你甚至可以这样写:

var f = function(){ ... }();

它周围的括号是为了警告您该函数是一个 IIFE(立即调用函数表达式)。在第一个示例中,您仅将函数视为表达式。在第二个中,您将整个 IIFE 视为一个表达式。代码的运行方式没有区别,它只是为您提供线索。

于 2013-01-10T06:06:23.843 回答