DEV Community

Cover image for Memory Location Behavior in JavaScript
Md Pervez Hossain
Md Pervez Hossain

Posted on

Memory Location Behavior in JavaScript

👍 Primitive Types
Primitive types in JavaScript include Number, String, Boolean, Null, Undefined, Symbol, and BigInt. These types are immutable and are stored directly in the variable's memory location.

👉 Memory Behavior :

  • When a primitive value is assigned to a variable, the value itself is stored in the variable's memory location.
  • When the variable is assigned to another variable, the value is copied. Changes to one variable do not affect the other.
  • When the variable is Re-assigned , the value is stored in the new memory location.

Image description

Explanation , of Above Example : 👇

The variable "a" is declared and initialized with the value 10. This means a directly stores the value 10 in its memory location.

The variable "b" is declared and initialized with the value of "a". Since "a" holds a primitive value, "b" gets a copy of that value. At this point, "b" also stores the value 10 in its own memory location. Now, both "a" and "b" have the value 10, but they are stored in separate memory locations.

Now variable "b" is reassigned with the value 20. This changes the value stored in b's memory location to 20. The variable "a" remains unchanged and still holds the value 10 because hey are stored in separate memory locations.

👍 Reference Types
Reference types include Object, Array, Function, and other objects created using the new keyword. These types are mutable and are stored as references to their memory locations.

👉 Memory Behavior :

  • When a reference type value is assigned to a variable, the variable stores a reference (or pointer) to the location in memory where the value is actually stored.

  • When the variable is assigned to another variable, only the reference is copied, not the value itself. Changes to one variable affect the other because they both reference the same object.

Image description

Explanation , of Above Example : 👇

Here "obj1" is a object . In JavaScript Object is Reference Data Types , meaning they are stored in memory, and variables store references (or pointers) to those objects. "obj1" is assigned a reference to an object with a property name set to "Alice".

"obj2" is assigned the same reference as "obj1". Now, both "obj1" and "obj2" point to the same object in memory.

Changing the name property of the object through "obj2" also affects "obj1" because both variables reference the same object.

This distinction between primitive values and objects/references is crucial for understanding how variables interact with memory in JavaScript, particularly when using let for variable declarations.

Top comments (1)

Collapse
 
raajaryan profile image
Deepak Kumar

Hello everyone,

I hope you're all doing well. I recently launched an open-source project called the Ultimate JavaScript Project, and I'd love your support. Please check it out and give it a star on GitHub: Ultimate JavaScript Project. Your support would mean a lot to me and greatly help in the project's growth.

Thank you!