可能重複:
JavaScript: var functionName = function() {} vs function functionName() {}這兩個函數聲明在JavaScript中有什麼區別?
在JavaScript中,我們可以說:
function a() {};
或者我們可以說
var a = function() {};
鈣任何人都可以向我解釋這些不同之處,哪些更可取,哪些情況下每個人會使用哪一種?
任何鏈接或外部閱讀也將不勝感激。
可能重複:
JavaScript: var functionName = function() {} vs function functionName() {}這兩個函數聲明在JavaScript中有什麼區別?
在JavaScript中,我們可以說:
function a() {};
或者我們可以說
var a = function() {};
鈣任何人都可以向我解釋這些不同之處,哪些更可取,哪些情況下每個人會使用哪一種?
任何鏈接或外部閱讀也將不勝感激。
一個是函數聲明,另一個是聲明函數的對象。這是幾乎每個面向對象的javascript教程的基礎。
Explain the encapsulated anonymous function syntax
向下滾動到接受的答案下半年
首先
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
據我所知是沒有區別的除了只有後一種方式才能用於物體。 – pimvdb 2011-01-31 19:40:25
@pimvdb有一個相當大的[區別](http://bonsaiden.github.com/JavaScript-Garden/#functions)。 – Raynos 2011-01-31 19:43:22