JavaScript では、スタックとヒープはデータ管理に使用される 2 種類のメモリであり、それぞれ明確な目的があります。
*スタックとヒープとは *
スタック : スタックは、主にプリミティブ型と関数呼び出しを保存するために、静的メモリ割り当てに使用されます。シンプルな後入れ先出し (LIFO) 構造なので、アクセスが非常に高速です。
ヒープ: ヒープは動的メモリ割り当てに使用され、オブジェクトと配列 (非プリミティブ型) が保存されます。スタックとは異なり、ヒープは柔軟なメモリ割り当てが可能であるため、より複雑でアクセスが遅くなります。
スタックメモリの例:
let myName = "Amardeep"; //primitive type stored in stack let nickname = myName; // A copy of the value is created in the Stack nickname = "Rishu"; // Now changing the copy does not affect the original value . console.log(myName); // output => Amardeep (Original values remains unchanged since we are using stack) console.log(nickname); // output => rishu (only the copied value will changed)
この例では:
ヒープメモリの例
次に、非プリミティブ データ型 (オブジェクト) が Heap 内でどのように管理されるかを確認してみましょう。
let userOne = { // The reference to this object is stored in the Stack. email: "user@google.com", upi: "user@ybl" }; // The actual object data is stored in the Heap. let userTwo = userOne; // userTwo references the same object in the Heap. userTwo.email = "amar@google.com"; // Modifying userTwo also affects userOne. console.log(userOne.email); // Output: amar@google.com console.log(userTwo.email); // Output: amar@google.com
この例では:
重要なポイント
*スタック メモリ * は、プリミティブ型と関数呼び出しを保存するために使用されます。値を割り当てるたびに、新しいコピーがスタックに作成されます。
*ヒープ メモリ * はオブジェクトと配列の保存に使用されます。同じオブジェクトを参照する変数はメモリ内の同じメモリ位置を共有するため、1 つの変数を変更すると他の変数に影響します。
以上がJavaScript におけるスタックとヒープについて理解する。の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。