2010-08-03 57 views
2

我看到在在Javascript中,使用var foo = function foo(i){...}的動機或優勢是什麼?

In Javascript, why write "var QueryStringToHash = function QueryStringToHash (query) { ... }"?

答案這是做這樣的事情

var foo = function foo(param) { 
    ... 
} 
在特定情況下

,爲什麼這樣做,而不是隻使用

function foo(param) { 
    ... 
} 

?這樣做的優點或動機是什麼?

+2

[「常規」函數與JavaScript中的函數變量的可能重複](http://stackoverflow.com/questions/1333830/usual-functions-vs-function-variables-in-javascript) – 2010-08-03 22:42:25

+3

您可能想閱讀[this](http://yura.thinkweb2.com/named-function-expressions/) – 2010-08-03 22:45:11

+0

你可能錯過了一箇中間值:'var foo = function(param){...}'。這與使用命名函數表達式的主要區別在於調試的好處(在@ Daniel的鏈接中提到)和遞歸(僅在傳遞中提到)。 – 2010-08-04 13:52:24

回答

0

簡而言之,如果您採用以下代碼,第一個示例將創建一個名爲foo的函數,第二個示例將創建一個匿名函數並將其分配給bar變量。除了風格之外,其基本區別在於foo可以在代碼中調用之前定義(因爲它是函數的名稱)。否則,bar在接收到賦值之前是未定義的變量,因此以前無法使用。

var foo_result = foo(123); // ok 
function foo(param) { /* ... */ } 

var bar_result = bar(123); // error: undefined is not a function 
var bar = function(param) { /* ... */ } 
var bar_result = bar(123); // ok 

我建議您閱讀@Pekka的建議。

相關問題