2012-01-31 15 views
3

可能性の重複:
JavaScript: var functionName = function() {} vs function functionName() {}
Function declaration - Function Expression - Scopejavascriptのvar関数と関数の違いは何ですか?

私はおよそvar a = 1を学んだが、ローカル変数を定義しますが、機能の話をされ、私はそれが現在の範囲内でのみ利用可能だと思いましたvar変数が動作すると、次の2つのコードスニペットの違いは何ですか?

function aPrint() { 
console.log('a'); 
} 

var a = function aPrent() { 
console.log('a'); 

} 

答えて

1

あなたの最初の例は、 "関数宣言" で参照してください。それは、それが宣言されているスコープ(それがソースコードに表示される前に、あなたはそれを呼び出すことができます)でどこでも利用できるようにする関数を宣言します。これは「巻上げ」と呼ばれることもあります(それは、その範囲の上部に吊り下げられます)。

あなたの第二の例では、「という名前の関数式」です。変数宣言は、(関数宣言のように)それが定義されている範囲の一番上に掲揚されていますが、それが期待するところ割り当てはまだ起こるので、あなたはそれが変数に代入された後まで、関数を呼び出すことはできません。

だけで機能は名前がありません「関数式」、第三の選択肢は、(それは無名関数があります)があります:

var a = function() { 
    console.log('a'); 
} 

あなたはおそらくあなたが持っていることがわかります名前付き関数式にはほとんど使用しません(デバッグ時には便利ですが)ので、通常は無名関数を使用する方が良いでしょう。名前の関数式では、名前だけで関数自体の内部スコープ内にあるので、あなたは、通常は名前で関数を参照することはできません。説明はどのように簡潔な

関連する問題