2014-02-16 112 views
2

我知道這兩者之間的區別是:什麼時候應該使用無功功能,並且功能

var myFunction = function(a) { ... } 
function myFunction2(a) { ... } 

我只是想不通我應該使用第一個,當第二個。

我看到這個var functionName = function() {} vs function functionName() {}但正如我所說,我知道這兩者之間的區別是什麼。

+0

@elclanrs,這不是!!!!!!!!! –

+0

這可能很有趣:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ – idmean

+1

我不認爲這足以證明重複,這就是爲什麼我投票關閉。其他答案中提到的區別在於提升,匿名函數沒有名稱(duh)。 – elclanrs

回答

1

好吧,這兩個選項在正文和重複文章中都有說明。如果你使用:

var functionOne = function() { … } 
function functionTwo() { … } 

然後functionOne不會在其定義之前的塊存在,並正在運行時定義。而另一個選項functionTwo是在解析時定義的,可以在程序中的任何地方調用。另一個變化是函數內的this的行爲。

所以基本上,你的問題是:

  • 我怎麼想我的範圍功能?
  • 如果範圍無關緊要,我更喜歡運行時還是解析時間?

要獲得完整回答這些問題,我真的建議你閱讀和克羅克福德"Javascript the good parts"重讀短的書,它看起來像@ wumm的suggested article是非常相關的,以及。

+0

我明白你的意思,但我相信術語「解析時間」在這裏是不正確的。 JavaScript源代碼在開始時被完全解析,然而在任何情況下,只有代碼實際運行時,函數纔會存在。區別在於,在執行代碼的任何其他語句之前,將評估所有變量和函數聲明。 –

相關問題