Maison >interface Web >js tutoriel >Comprendre la pile et le tas en JavaScript.

Comprendre la pile et le tas en JavaScript.

DDD
DDDoriginal
2024-10-14 06:19:29932parcourir

Understanding Stack and Heap in JavaScript .

En JavaScript, la pile et le tas sont deux types de mémoire utilisés pour gérer les données, chacun ayant un objectif distinct :

  1. Pile
  2. Tas

*Que sont Stack et Heap *
Stack : La pile est utilisée pour l'allocation de mémoire statique, principalement pour stocker les types primitifs et les appels de fonction. Il s'agit d'une structure simple, dernier entré, premier sorti (LIFO), ce qui la rend très rapide d'accès.

Heap : Le Heap est utilisé pour l'allocation dynamique de mémoire, où les objets et les tableaux (types non primitifs) sont stockés. Contrairement à la Stack, le Heap est plus complexe et plus lent d'accès, car il permet une allocation de mémoire flexible.

Exemple de mémoire de pile :

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)

Dans cet exemple :

  • myName est stocké dans la pile en tant que type primitif.
  • Lorsque la valeur de myName est attribuée à pseudo, une copie de cette valeur est créée dans la pile.
  • Changer de pseudo n'affecte pas myName , puisqu'il s'agit de copies indépendantes dans la mémoire.

Exemple de mémoire de tas
Vérifions maintenant comment les types de données (objets) non primitifs sont gérés dans le tas.

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

Dans cet exemple :

  • userOne contient une référence à un objet stocké dans le Heap. -userTwo se voit attribuer la même référence, ce qui signifie que userOne et userTwo pointent vers le même objet dans le tas. -La modification de userTwo.email affecte directement userOne.email, car les deux références pointent vers le même emplacement en mémoire.

Points clés à retenir
*Stack Memory * est utilisé pour stocker les types primitifs et les appels de fonction. Chaque fois que vous attribuez une valeur, une nouvelle copie est créée dans la pile.
*Heap Memory * est utilisé pour stocker des objets et des tableaux. Les variables qui font référence au même objet partagent le même emplacement mémoire en mémoire, donc la modification d'une variable affecte les autres.

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn