"Si un ouvrier veut bien faire son travail, il doit d'abord affûter ses outils." - Confucius, "Les Entretiens de Confucius. Lu Linggong"
Page de garde > La programmation > Comprendre la pile et le tas en JavaScript.

Comprendre la pile et le tas en JavaScript.

Publié le 2024-11-03
Parcourir:852

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. Empiler
  2. Tas

*Que sont la pile et le tas *
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 pile, le tas 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 à pseudonyme, 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: "[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]

Dans cet exemple :

  • userOne contient une référence à un objet stocké dans le tas. -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.

Principaux points à 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, donc la modification d'une variable affecte les autres.

Déclaration de sortie Cet article est reproduit sur : https://dev.to/amar_x_vr/understanding-stack-and-heap-in-javascript--11ho?1 En cas de violation, veuillez contacter [email protected] pour le supprimer.
Dernier tutoriel Plus>

Clause de non-responsabilité: Toutes les ressources fournies proviennent en partie d'Internet. En cas de violation de vos droits d'auteur ou d'autres droits et intérêts, veuillez expliquer les raisons détaillées et fournir une preuve du droit d'auteur ou des droits et intérêts, puis l'envoyer à l'adresse e-mail : [email protected]. Nous nous en occuperons pour vous dans les plus brefs délais.

Copyright© 2022 湘ICP备2022001581号-3