2011-01-31 22 views
5

可能性の重複:JavaScriptのこれら2つの関数宣言の違いは何ですか?

function a() {}; 

それとも我々は

var a = function() {}; 

カルシウムを言うことができた:私たちが言うことができますJavaScriptで
JavaScript: var functionName = function() {} vs function functionName() {}

どの人がどのような状況下で、どのような状況下で、どのような状況下で、どのような状況が異なるのかを私に説明します。

リンクや外部からの読書も高く評価されます。

+0

私の知る限りは違いはありません知っているようにただし、後者の方法だけをオブジェクトで使用できる点が異なります。 – pimvdb

+1

@pimvdbかなり大きい[違い](http://bonsaiden.github.com/JavaScript-Garden/#functions)があります。 – Raynos

答えて

0

1つは関数宣言であり、もう1つは関数を宣言するオブジェクトです。これは事実上すべてのオブジェクト指向のjavascriptチュートリアルの基礎です。

+0

はjsのオブジェクトでもないのですか? – Simon

+0

@サイモンはい。 (ほとんど)すべてが目的である – Raynos

2

まず

function a() {}; 

の後半まで。 表示されるコンテキストに応じて、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

関連する問題