首頁 > web前端 > js教程 > 了解 JavaScript 中的堆疊和堆疊。

了解 JavaScript 中的堆疊和堆疊。

DDD
發布: 2024-10-14 06:19:29
原創
923 人瀏覽過

Understanding Stack and Heap in JavaScript .

在 JavaScript 中,堆疊和堆是用於管理資料的兩種類型的內存,每種都有不同的用途:

  1. 堆疊

*什麼是堆疊和堆*
堆疊:堆疊用於靜態記憶體分配,主要用於儲存基本類型和函數呼叫。它是一個簡單的後進先出 (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)
登入後複製

在此範例中:

  • myName 作為原始類型儲存在 Stack 中。
  • 當暱稱被指派 myName 的值時,會在 Stack 中建立該值的副本。
  • 更改暱稱不會影響 myName ,因為它們在記憶體中是獨立的副本。

堆記憶體範例
現在讓我們檢查一下堆中如何管理非原始資料類型(物件)。

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
登入後複製

在此範例中:

  • userOne 儲存儲存在堆疊中的物件的參考。 -userTwo 被指派相同的引用,這表示 userOne 和 userTwo 都指向堆中的同一個物件。 -更改 userTwo.email 直接影響 userOne.email,因為兩個引用都指向記憶體中的相同位置。

重點
*堆疊記憶體 * 用於儲存原始類型和函數呼叫。每次分配一個值時,都會在堆疊中建立一個新副本。
*堆疊記憶體 *用於儲存物件和陣列。引用同一物件的變數共享記憶體中的相同記憶體位置,因此更改一個變數會影響其他變數。

以上是了解 JavaScript 中的堆疊和堆疊。的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:dev.to
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板