是否有JavaScript的模块之间的差异:的javascript模块模式实现
(function(){}())
VS
(function(){})()
从书 “好的部分” 最早由克罗克福德。 其次是使用Typescript生成的代码。
是否有JavaScript的模块之间的差异:的javascript模块模式实现
(function(){}())
VS
(function(){})()
从书 “好的部分” 最早由克罗克福德。 其次是使用Typescript生成的代码。
不,这两个函数之间没有区别,它们是如何被调用的。在这两种情况下,您都会创建一个匿名函数并立即执行它。
需要“外”括号的唯一原因是,当JavaScript分析器期待看到一个说法,如果看到function
它假定接下来将是一个功能声明。但是我们想给出一个函数表达式,所以通过给它一个初始的(
,我们把它放到期望表达式的状态。
但是,调用该函数的()
(在}
之后或在包装外部之外)没有任何区别。
不,没有区别,他们都是一样的。我倾向于使用后者......它似乎更有意义。 (function(){})
定义了这个函数,然后你用()
来调用它。不管哪种情况,请在第一个(
之前使用(前导)分号。 Reference
没有什么不同。如果你的功能没有返回任何值,你也可以写第三个选项
!function(){}()
它与设计模式有什么关系? – thefourtheye
[自动执行匿名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
我认为模块模式是一种设计模式说) – user1407492