2015-06-03 119 views
0

我有這樣的代碼:聲明函數在JavaScript

function myFunction(){ 
    alert("Hello"); 
} 

而這個其他代碼:

var myFunction = function(){ 

} 

的區別是什麼?

+4

http://stackoverflow.com/questions/336859/var-functionname-function-vs-function-functionname – Yang

回答

2

第一種是在javascript中聲明函數的正常方式。你可以通過引用它的名字myfunction()來調用它。

第二個是存儲在變量中的匿名函數,因爲函數是JavaScript中的第一類公民。變量myfunction現在擁有匿名函數。

基本上,第一個是一個正常的功能,而第二個是一個變量,持有一個匿名函數。

+0

而第二個很難調試,因爲它的名字不會顯示在堆棧軌跡 – renatoargh

0

第一個是命名函數,如果您要查看堆棧跟蹤,則在調用它時會看到myFunction

第二個是設置爲匿名函數的變量。在堆棧跟蹤中,該函數的名稱將爲<anonymous>,因此在存在多個匿名函數時難以跟蹤。

+0

雖然你的陳述是真實的,但它給人的印象是使用匿名函數是不好的。這不是,而且有很多爭論。最壞的情況是值得商榷的。 – Andre

+0

我從來沒有說過它不好,只是很難調試哈哈,有很多時候使用兩者,甚至一起使用。事實上,匿名函數對於提供範圍非常有用,我試圖通過它自我實例化。 –

+0

沒問題,正如我所說的,它給人的印象。我只是想讓初學者明白,可能會閱讀你的評論,並認爲他們不應該使用匿名函數。 – Andre