JAvascriptカーネルシンボル331.コールスタック



1.辞書の意味


call


-名詞


1.電話(通話)
2.(鳥の)鳴き声

-動詞


に名をつける
形容する

stack


-名詞

  • (通常はきれい)が積み上げられ、
  • が積み上げられている.
  • 余り、
  • 余り

    -動詞


    山.
    Call Stack(Call Stack)は、複数の関数を呼び出すスクリプトでその位置を追跡するエージェント(WebブラウザのJavaScriptエージェントなど)のメカニズムです.現在実行中の関数、実行中の関数、次に呼び出される関数を制御します.
    (from.MDN)
    呼び出しスタックは簡単に言えばJavaScript関数が順番に実行される場所です.stackの事前定義のように、JavaScriptの関数は順次スタック、実行、削除されます.

    2.動作原理



    呼び出しスタックの動作原理を理解する前に、JavaScriptを起動するエンジンについて簡単に説明しましょう.
    JavaScriptエンジンは、「記憶heap」と呼ばれる位置とコールスタックを使用する.
  • メモリheap:メモリ割り当ての位置、変数、またはオブジェクトなどのメモリを格納します.
  • コールスタック:
  • 次に、JavaScriptエンジンが呼び出しスタックをどのように動作させるかを見てみましょう.
    😅 その前に!デフォルトでは、JavaScriptは単一スレッドベースの言語です.これは、呼び出しスタックが1つしかなく、一度に1つのことしか処理できないことを意味します.
    function multiply(x, y) {
        return x * y;
    }
    function printSquare(x) {
        var s = multiply(x, x);
        console.log(s);
    }
    printSquare(5);

    呼び出しスタック順序

  • step 00:実行する関数に達するまで、すべての関数を無視します.
  • step 01:関数printSquareを最初に呼び出し、スタックリストに追加します.
  • step 02:printSquare関数のすべてのコード.
  • step 03:printSquare関数は、実行中に関数内部の乗算関数を発見します.スタックに乗算関数を追加します.
  • step 04:multiply関数のすべてのコード.
  • step 05:multiply関数のすべてのコードが完了すると、スタックから削除されます.次にmultiplyを呼び出すprintSquareを返します.
  • step 06:printSquare関数内部のコンソール.ログが見つかりました.console.スタックにログを追加します.
  • step07 : console.logを起動し、スタックから削除します.
  • step 08:printSquare関数のすべてのコードが実行されると、スタックからprintSquare関数が削除されます.
    🤓また、[開発者ツールソース]タブの[コールステーション]ブロックでは、デバッグツールを使用して上記の手順を直接表示できます.
  • サマリ


    このようにJavaScript呼び出しスタックには、関数が順番にスタックされ、実行され、削除される動作原理がある.また、最も早い出力と後入先出(LIFO)構造を持つ羅列構造であることもわかります.