関数宣言
functionfoo(){}FOOは、プログラム全体が実行される前に巻き上げられるため、FOO機能を定義するスコープ(スコープ)全体で使用できます。関数定義の前にそれを呼び出すことさえ問題ありません。
foo(); //このコードが実行される前にfooが作成されたために機能しますfoo(){}特に範囲を紹介する記事を書く予定なので、ここでは詳しく説明しません。
関数式
関数宣言の場合、関数の名前が必要ですが、関数式にはオプションです。したがって、匿名関数式と名前付き関数式が表示されます。次のように:
関数宣言:function functionname(){}
関数宣言:function functionname [optional](){}
次に、関数名がない場合、それは関数式でなければなりませんが、関数名があるかどうかをどのように判断する必要があるかを知っています。
JavaScriptは、関数本体全体が式の一部である場合、それは関数式であり、それ以外の場合は関数宣言であることを指定します。以下は表現です。
var fuc = foo(){}さらにいくつかの極端な表現の例を見てみましょう:
!function foo(){} true && function foo(){}上記のステートメントは、関数式を区別するためだけのものであり、一般的にこのように書かれていません。次に、比較例を使用して、効果を確認します。
foo1(); // foo1はfoo2(); // foo2が実行される前にfoo2が作成されたために機能しません。
匿名関数式
var foo = function(){};上記の例は、匿名関数を可変fooに割り当てます。
foo; // 'undefined'foo(); //これはtypeerrorvar foo = function(){}を上げる;VARは宣言であるため、ここで変数FOOが巻き上げられ(宣伝)、プログラムが実行されると、変数FOOは呼び出されます。
ただし、割り当てステートメントは実行時にのみ有効になるため、変数FOOの値は未定義です。
名前付き関数式
話すもう1つのことは、名前付き関数の割り当てです。
var foo = function bar(){bar(); // works}; bar(); //参照エラーここでは、指定された関数バーは変数fooに割り当てられているため、関数宣言の外では見えませんが、バー機能内で呼ばれることもあります。これは、JavaScriptのネーミング関数のメカニズムであるため、関数の名前は関数内の範囲で常に有効であるためです。