2013-12-20 72 views
0

是否有JavaScript的模块之间的差异:的javascript模块模式实现

(function(){}()) 

VS

(function(){})() 

从书 “好的部分” 最早由克罗克福德。 其次是使用Typescript生成的代码。

+1

它与设计模式有什么关系? – thefourtheye

+0

[自动执行匿名JavaScript函数括号的位置?](http://stackoverflow.com/questions/3384504/location-of-parenthesis-for-auto-executing-anonymous-javascript-functions)和[(...())与(...)()在JavaScript中封闭](https://stackoverflow.com/questions/8774425/vs-in-javascript-closures) – Bergi

+0

我认为模块模式是一种设计模式说) – user1407492

回答

0

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

需要“外”括号的唯一原因是,当JavaScript分析器期待看到一个说法,如果看到function它假定接下来将是一个功能声明。但是我们想给出一个函数表达式,所以通过给它一个初始的(,我们把它放到期望表达式的状态。

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

0

不,没有区别,他们都是一样的。我倾向于使用后者......它似乎更有意义。 (function(){})定义了这个函数,然后你用()来调用它。不管哪种情况,请在第一个(之前使用(前导)分号。 Reference

1

没有什么不同。如果你的功能没有返回任何值,你也可以写第三个选项

!function(){}()