我知道這兩者之間的區別是:什麼時候應該使用無功功能,並且功能
var myFunction = function(a) { ... }
function myFunction2(a) { ... }
我只是想不通當我應該使用第一個,當第二個。
我看到這個var functionName = function() {} vs function functionName() {}但正如我所說,我知道這兩者之間的區別是什麼。
我知道這兩者之間的區別是:什麼時候應該使用無功功能,並且功能
var myFunction = function(a) { ... }
function myFunction2(a) { ... }
我只是想不通當我應該使用第一個,當第二個。
我看到這個var functionName = function() {} vs function functionName() {}但正如我所說,我知道這兩者之間的區別是什麼。
好吧,這兩個選項在正文和重複文章中都有說明。如果你使用:
var functionOne = function() { … }
function functionTwo() { … }
然後functionOne
不會在其定義之前的塊存在,並正在運行時定義。而另一個選項functionTwo
是在解析時定義的,可以在程序中的任何地方調用。另一個變化是函數內的this
的行爲。
所以基本上,你的問題是:
要獲得完整回答這些問題,我真的建議你閱讀和克羅克福德"Javascript the good parts"重讀短的書,它看起來像@ wumm的suggested article是非常相關的,以及。
我明白你的意思,但我相信術語「解析時間」在這裏是不正確的。 JavaScript源代碼在開始時被完全解析,然而在任何情況下,只有代碼實際運行時,函數纔會存在。區別在於,在執行代碼的任何其他語句之前,將評估所有變量和函數聲明。 –
@elclanrs,這不是!!!!!!!!! –
這可能很有趣:http://javascriptweblog.wordpress.com/2010/07/06/function-declarations-vs-function-expressions/ – idmean
我不認爲這足以證明重複,這就是爲什麼我投票關閉。其他答案中提到的區別在於提升,匿名函數沒有名稱(duh)。 – elclanrs