>  기사  >  웹 프론트엔드  >  JavaScript의 스택 및 힙 이해 .

JavaScript의 스택 및 힙 이해 .

DDD
DDD원래의
2024-10-14 06:19:29838검색

Understanding Stack and Heap in JavaScript .

JavaScript에서 스택과 힙은 데이터 관리에 사용되는 두 가지 유형의 메모리로, 각각 고유한 목적을 가지고 있습니다.

  1. 스택

*스택과 힙이란 무엇입니까 *
스택 : 스택은 주로 기본 유형 및 함수 호출을 저장하기 위해 정적 메모리 할당에 사용됩니다. 간단한 LIFO(후입선출) 구조로 접근이 매우 빠릅니다.

Heap : 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)

이 예에서는:

  • myName은 기본 유형으로 스택에 저장됩니다.
  • 닉네임에 myName 값이 할당되면 해당 값의 복사본이 스택에 생성됩니다.
  • 닉네임 변경은 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 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.