ホームページ >ウェブフロントエンド >jsチュートリアル >JavaScript 関数を定義する前に使用できるのはなぜですか?
その型破りな外観にもかかわらず、JavaScript では明示的に定義する前に関数を使用できます。この一見魔法のような動作は、関数宣言の特殊な性質から生じています。
JavaScript では、関数宣言は関数式による代入とは異なる動作をします。 function キーワードを使用して関数を宣言すると、関数ブロック内のコードが実行される前にその識別子がバインドされます。
たとえば、次のコードを考えてみましょう。
function fooCheck() { alert(internalFoo()); // Uses internalFoo() before definition return internalFoo(); // Still uses it function internalFoo() { return true; } // Defined later } fooCheck();
このコードではの場合、fooCheck 関数は、同じブロック内で後から定義された場合でも、internalFoo 関数にアクセスできます。これは、関数宣言自体によって識別子 externalFoo がバインドされ、使用可能になるためです。
対照的に、変数に代入される関数式に定義を変更すると、
var internalFoo = function() { return true; };
これは、関数式が上から下に評価され、代入ステートメントは fooCheck が呼び出された後にのみ実行されるためです。
関数宣言と関数式は、構文的に異なるエンティティです。関数宣言はステートメントであり、関数式は式です。この違いにより、コード例で観察される動作が異なります。
この動作は、ECMAScript 標準 (セクション 10.1.3) で概説されています。この標準は最も読みやすいものではないかもしれませんが、JavaScript のこの複雑な側面について包括的に説明しています。
以上がJavaScript 関数を定義する前に使用できるのはなぜですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。