javascript模块模式实现

时间:2013-12-20 14:00:01

标签: javascript module-pattern

javascript模块之间是否存在任何差异:

(function(){}())

vs

(function(){})()

首先来自Crockford的书“好的部分”。 第二个是使用Typescript生成的代码。

3 个答案:

答案 0 :(得分:1)

没有什么不同。如果您的函数没有返回任何值

,您也可以编写第三个选项
!function(){}()

答案 1 :(得分:0)

不,这两个函数之间没有区别,它们是如何被调用的。在这两种情况下,您都要创建一个匿名函数并立即执行它。

需要“外部”parens的唯一原因是,当JavaScript解析器期望看到一个语句时,如果它看到function,它假定后面的内容将是一个函数声明 。但是我们想要一个函数 expression ,所以通过给它一个初始的(,我们把它放到一个期望表达式的状态。

但是()调用函数的地方(在}之后或在包装parens之外)没有任何区别。

答案 2 :(得分:0)

没有差别,它们都是一样的。我倾向于使用后者...它似乎更有意义。 (function(){})定义了该函数,然后使用()调用它。但无论如何,在第一个(之前使用(前导)分号。 Reference