2011-01-31 292 views
5

可能重複:
JavaScript: var functionName = function() {} vs function functionName() {}這兩個函數聲明在JavaScript中有什麼區別?

在JavaScript中,我們可以說:

function a() {}; 

或者我們可以說

var a = function() {}; 

鈣任何人都可以向我解釋這些不同之處,哪些更可取,哪些情況下每個人會使用哪一種?

任何鏈接或外部閱讀也將不勝感激。

+0

據我所知是沒有區別的除了只有後一種方式才能用於物體。 – pimvdb 2011-01-31 19:40:25

+1

@pimvdb有一個相當大的[區別](http://bonsaiden.github.com/JavaScript-Garden/#functions)。 – Raynos 2011-01-31 19:43:22

回答

0

一個是函數聲明,另一個是聲明函數的對象。這是幾乎每個面向對象的javascript教程的基礎。

2

首先

function a() {}; 

這可以是FunctionDeclaration或FunctionExpression。 我們只能知道它是一個FunctionDeclaration還是一個FunctionExpression,取決於它出現的上下文。

例如#1)

0,function a() {} //FunctionExpression 

例子#2)

(function a() {}()); //FunctionExpression 

例#3)

var b = function a() {}; //FunctionExpression 

示例#4)

foo(function a(){}); //FunctionExpression 

var a = function() {}; 

,這顯然是有兩個原因FunctionExpression。

1)的分配

2)匿名函數

有用的鏈接的右側:

http://sweatte.wordpress.com/syntax/javascript-idioms-and-gotchas/

http://www.ecma-international.org/publications/standards/Ecma-262.htm