2012-01-20 6 views
1

可能性の重複:
Difference between using var and not using var in JavaScriptvarの有無にかかわらず関数を宣言する方が良いですか?

私は、人々はJavaScriptで関数を宣言見てきた二つの方法があります。次のいずれかの

foo = function() 
{ 
    //Do stuff 
} 

または

var foo = function() 
{ 
    //Do stuff 
} 

私はJavaScriptに新たなんだ、と2の間に実質的な違いがあるかどうかを知りたいです。他のものよりも使用する方が良いのですか、それとも状況に依存していますか?あなたがvarを述べていない場合

答えて

0

は、2つの方法があります。あなたのケースでは、デフォルトの関数宣言

を使用して、変数

  • でそれを宣言

    • 、あなたは変数に宣言しようとしています。変数の宣言(ファンクションかどうか)は、varの構文で始まります。

      function foo() { } 
      

      をだから、あなたはそれを事前に定義しない限り、再び、あなたのケースでは、varが、必要とされています:

      var foo; 
      foo = function() { }; 
      

      編集:Asを正常に機能を定義する際

      var foo = function() { }; // please note that semicolon (;) 
      

      James氏は、グローバルスコープで定義する場合は、varというキーワードを破棄することができます。しかし、変数を別のスコープレベルで定義したい場合は、変数を事前定義することをお勧めします。

  • +1

    'var'は*必須*ではありませんが、使用する必要があります。 –

    +0

    @FelixKling私は自分の投稿を編集しました;) –

    1

    私の知る限りでは、あなたの関数は、それが親の範囲に含まれることになるvarとして、あなたがそれを宣言しかし場合は、グローバルスコープ(windowオブジェクトと同じスコープレベル)に割り当てられます。

    EDIT:Tomalakからの応答後に明確にするため、関数は親スコープに属しますが、親スコープが実行される関数であれば、囲み関数の実行後にvarなしで宣言された関数にアクセスできますグローバルな文脈の中で。

    +1

    これは正しくありません。関数は常にその親スコープに含まれます。 – Tomalak

    +0

    @Tomalakあなたは正しいです、それは私の部分のエラーでした。 –

    0

    varで宣言することをお勧めします。そうしないと、グローバルスコープ内の他のvarに影響している可能性があります。詳細については、この質問の例を確認してください:What is the scope of variables in JavaScript?

    関連する問題