ホームページ  >  記事  >  ウェブフロントエンド  >  JS はバックグラウンドでどのように動作するのでしょうか?

JS はバックグラウンドでどのように動作するのでしょうか?

DDD
DDDオリジナル
2024-09-18 21:50:02999ブラウズ

How JS works behind the scenes?

JavaScript の仕組み

JavaScript はシングルスレッド環境で動作します。つまり、一度に 1 つのタスクを実行します。グローバルまたはファンクショナルのいずれかである実行コンテキスト (EC) でコードの実行を処理します。

グローバル実行コンテキスト (GEC)

  • コード ファイルのロード時に作成されます。

  • GEC は、グローバル オブジェクト (ブラウザーではウィンドウ) と this キーワードのセットアップを担当します。

  • グローバル スコープで宣言されたすべての変数と関数は、グローバル EC に保存されます。

実行コンテキストフェーズ

  • メモリ作成フェーズ:
    メモリフェーズでは、JavaScript は変数と関数にメモリを割り当てます。
    変数には最初は未定義の値が割り当てられますが、関数は完全な定義でメモリに保存されます。

  • 実行フェーズ:
    メモリ割り当てフェーズの後、JavaScript はコードを 1 行ずつ実行し始めます。
    変数に実際の値が割り当てられ、関数が実行されます。

機能実行コンテキスト (FEC)

  • 関数が呼び出されるたびに、JavaScript はその関数専用の新しい実行コンテキストを作成します。

  • 各関数の実行コンテキストには 2 つのフェーズがあります:

  • メモリフェーズ: メモリはローカル変数と関数内の関数に割り当てられます。

  • 実行フェーズ: 関数本体が実行され、変数が実際の値を取得します。

  • 実行後、関数の実行コンテキストは破棄され、メモリが解放されます。

リターンステートメント
関数が return ステートメントに到達すると、関数は直ちに終了し、その実行コンテキストは呼び出しスタックから削除されます。 return ステートメントの後に書かれたコードは実行されません。

呼び出しスタック
JavaScript は呼び出しスタックを使用して実行コンテキストを管理します。

  • LIFO (後入れ先出し) の概念が使用されます:

  • 関数が呼び出されると、その実行コンテキストがスタックの最上位に配置されます。

  • 関数が完了すると (またはリターンに到達すると)、その実行コンテキストはスタックからポップされます。

JavaScript はシングルスレッドです

シングルスレッドとは、JavaScript が一度に 1 つの操作しか実行できないことを意味しますが、それでも非同期操作を実行できることは、次回の投稿で JavaScript のこの驚くべき機能について説明するので、それほど興味深いものではありません。

以上がJS はバックグラウンドでどのように動作するのでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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