目次
JavaScript における予期せぬ関数の使用法を理解する
関数宣言の魔法
関数式と代入
次の違い宣言と式
ホームページ ウェブフロントエンド jsチュートリアル JavaScript 関数を定義する前に使用できるのはなぜですか?

JavaScript 関数を定義する前に使用できるのはなぜですか?

Oct 29, 2024 pm 04:23 PM

 Why Can You Use JavaScript Functions Before They are Defined?

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 サイトの他の関連記事を参照してください。

このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。

ホットな記事タグ

メモ帳++7.3.1

メモ帳++7.3.1

使いやすく無料のコードエディター

SublimeText3 中国語版

SublimeText3 中国語版

中国語版、とても使いやすい

ゼンドスタジオ 13.0.1

ゼンドスタジオ 13.0.1

強力な PHP 統合開発環境

ドリームウィーバー CS6

ドリームウィーバー CS6

ビジュアル Web 開発ツール

SublimeText3 Mac版

SublimeText3 Mac版

神レベルのコード編集ソフト(SublimeText3)

JavaScriptの文字列文字を交換します JavaScriptの文字列文字を交換します Mar 11, 2025 am 12:07 AM

JavaScriptの文字列文字を交換します

カスタムGoogle検索APIセットアップチュートリアル カスタムGoogle検索APIセットアップチュートリアル Mar 04, 2025 am 01:06 AM

カスタムGoogle検索APIセットアップチュートリアル

例JSONファイルの例 例JSONファイルの例 Mar 03, 2025 am 12:35 AM

例JSONファイルの例

8見事なjQueryページレイアウトプラグイン 8見事なjQueryページレイアウトプラグイン Mar 06, 2025 am 12:48 AM

8見事なjQueryページレイアウトプラグイン

10 jQuery構文蛍光物 10 jQuery構文蛍光物 Mar 02, 2025 am 12:32 AM

10 jQuery構文蛍光物

独自のAjax Webアプリケーションを構築します 独自のAjax Webアプリケーションを構築します Mar 09, 2025 am 12:11 AM

独自のAjax Webアプリケーションを構築します

' this' JavaScriptで? ' this' JavaScriptで? Mar 04, 2025 am 01:15 AM

' this' JavaScriptで?

10 JavaScript&JQuery MVCチュートリアル 10 JavaScript&JQuery MVCチュートリアル Mar 02, 2025 am 01:16 AM

10 JavaScript&JQuery MVCチュートリアル

See all articles