在 JavaScript 中,堆疊和堆是用於管理資料的兩種類型的內存,每種都有不同的用途:
*什麼是堆疊與堆*
堆疊:堆疊用於靜態記憶體分配,主要用於儲存基本類型和函數呼叫。它是一個簡單的後進先出 (LIFO) 結構,使其存取速度非常快。
Heap :堆用於動態記憶體分配,其中儲存物件和陣列(非基本類型)。與堆疊不同,堆更複雜且存取速度更慢,因為它允許靈活的記憶體分配。
堆疊記憶體範例:
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)
在此範例中:
堆內存範例
現在讓我們檢查一下堆中如何管理非原始資料類型(物件)。
let userOne = { // The reference to this object is stored in the Stack. email: "[email protected]", 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 = "[email protected]"; // Modifying userTwo also affects userOne. console.log(userOne.email); // Output: [email protected] console.log(userTwo.email); // Output: [email protected]
在此範例中:
要點
*堆疊記憶體*用於儲存原始類型和函數呼叫。每次分配一個值時,都會在堆疊中建立一個新副本。
*堆疊記憶體 *用於儲存物件和陣列。引用同一物件的變數共享記憶體中的相同記憶體位置,因此更改一個變數會影響其他變數。
免責聲明: 提供的所有資源部分來自互聯網,如果有侵犯您的版權或其他權益,請說明詳細緣由並提供版權或權益證明然後發到郵箱:[email protected] 我們會在第一時間內為您處理。
Copyright© 2022 湘ICP备2022001581号-3