2011-07-07 8 views
1

重複の可能性:
Javascript: var functionName = function() {} vs function functionName() {}
What is the difference between a function expression vs declaration in Javascript?なぜ匿名関数は名前付き関数と異なる扱いですか?

今日、私は次のような現象つまずい:

foo(); 
bar(); 

function foo() 
{ 
    console.log("inside foo"); 
} 

var bar = function() 
{ 
    console.log("inside bar"); 
} 

Firebugのは、次のエラーメッセージが表示されて文句を言う:

バーには、いくつかのチュートリアルがfunction f()var f = function()は基本的に同じものであることを主張する機能

ではありません。明らかに、彼らはそうではありませんが、ここでは正確に何が起こっていますか?

+1

dup:http://stackoverflow.com/questions/1013385/what-is-the-difference-between-a-function-expression-vs-declaration- in-javascript – davin

+0

明確にする:これは* anonymous *関数の現象だけでなく、function * expressions *の現象でもあります。 *名前付き*関数を関数式として持つこともできますが、同じ効果が得られますが、匿名関数の宣言はできません。 –

答えて

1

ファンクション宣言は、物理定義の前であっても、定義されているスコープのどこでも使用できます。

var bar = function() { ... };は、関数を保持する通常の変数です。他のすべての変数と同様に、割り当てられた後にのみ使用できます。
(将来の変数値は観測できません)

関連する問題