2011-09-22 78 views

回答

8

我想你指的是什麼()之間的區別:

function(){}(); 

和(II):

function func(){}; 
func(); 

甚至(III) :

var func = function(){}; 
func(); 

所有這三種行爲同樣在考慮到的結果,但是他們有不同的命名和範圍的後果:

  • :這不會使可用的功能以任何名義,它是運行一次並被遺忘。您不能引用它

  • II未來:創建並在全封閉的功能提供func功能,它被定義甚至之前(吊裝

  • IIIfunc變量被定義爲指向一個函數。在定義之前它將不可訪問。

注意,在IIIII功能是通過func名referencable,可以再次調用多次。這對於I中的自我通話功能是不可能的。

+0

同意,但在什麼情況下使用自我調用功能?我的意思是說他們有什麼特別的需求可以用於某種特定的場景? – wOlVeRiNe

+2

我知道這是舊的,但對於其他讀者來說:你可以將所有自己的javascript包裝在一個大的自調用函數中,以便它可以運行,但是你知道它不會將變量名稱添加到全局名稱空間 - 沒有其他插件像jQuery或其他任何東西可能會意外地使用與您的相同名稱和衝突。 – iono

相關問題