2013-12-20 107 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(){}()