在 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