KoderSolution Logo
HomeArticlesTutorialsForumAI LabRun Code
KoderSolution Logo

The world’s most advanced technical ecosystem for modern software engineers. Learn, build, and grow with next-generation developer tools and resources.

Engineering Newsletter

Join 100,000+ engineers receiving curated high-signal content weekly.

Platforms

  • Technical Articles
  • Interactive Tutorials
  • AI Coding Lab
  • Developer Forum
  • Developer Tools

Pages

  • About Us
  • Contact Us
  • Privacy Policy
  • Terms of Service
  • Refund Policy
  • Disclaimer
  • Advertisement

Popular Topics

  • PHP
  • Laravel
  • Python
  • React.Js
  • MySQL
© 2026 KoderSolutionAll Rights Reserved
Developed Bymaksudur.dev
⚡

JavaScript

Topic Hub & Articles

JS Introduction

10 min

JS Where To

10 min

JS Output

10 min

Recap Quiz

5 Questions

JS Statements

10 min

JS Syntax

10 min

JS Comments

10 min

Recap Quiz

5 Questions

JS Variables

10 min

JS Let

10 min

JS Const

10 min

Recap Quiz

5 Questions

JS Operators

10 min

JS Arithmetic

10 min

JS Assignment

10 min

Recap Quiz

5 Questions

JS Data Types

10 min

JS Functions

10 min

JS Objects

10 min

Recap Quiz

5 Questions

JS Events

10 min

JS Strings

10 min

JS String Methods

10 min

Recap Quiz

5 Questions

JS String Search

10 min

JS String Templates

10 min

JS Numbers

10 min

Recap Quiz

5 Questions

JS Number Methods

10 min

JS BigInt

10 min

JS Arrays

10 min

Recap Quiz

5 Questions

JS Array Methods

10 min

JS Array Search

10 min

JS Array Sort

10 min

Recap Quiz

5 Questions

JS Array Iteration

10 min

JS Array Const

10 min

JS Dates

10 min

Recap Quiz

5 Questions

JS Date Formats

10 min

JS Date Get Methods

10 min

JS Date Set Methods

10 min

Recap Quiz

5 Questions

JS Math

10 min

JS Random

10 min

JS Booleans

10 min

Recap Quiz

5 Questions

JS Comparisons

10 min

JS If Else

10 min

JS Switch

10 min

Recap Quiz

5 Questions

JS Loop For

10 min

JS Loop For In

10 min

JS Loop For Of

10 min

Recap Quiz

5 Questions

JS Loop While

10 min

JS Break

10 min

JS Iterables

10 min

Recap Quiz

5 Questions

JS Sets

10 min

JS Maps

10 min

JS TypeOf

10 min

Recap Quiz

5 Questions

JS Type Conversion

10 min

JS Destructuring

10 min

JS Bitwise

10 min

Recap Quiz

5 Questions

JS RegExp

10 min

JS Errors

10 min

JS Scope

10 min

Recap Quiz

5 Questions

JS Hoisting

10 min

JS Strict Mode

10 min

JS This Keyword

10 min

Recap Quiz

5 Questions

JS Arrow Function

10 min

JS Classes

10 min

JS Modules

10 min

Recap Quiz

5 Questions

JS JSON

10 min

JS Debugging

10 min

JS Best Practices

10 min

Recap Quiz

5 Questions

JS Common Mistakes

10 min

JS Performance

10 min

JS Reserved Words

10 min

Recap Quiz

5 Questions

DOM Intro

10 min

DOM Methods

10 min

DOM Document

10 min

Recap Quiz

5 Questions

DOM Elements

10 min

DOM HTML

10 min

DOM Forms

10 min

Recap Quiz

5 Questions

DOM CSS

10 min

DOM Animation

10 min

DOM Events

10 min

Recap Quiz

5 Questions

DOM Event Listener

10 min

DOM Navigation

10 min

DOM Nodes

10 min

Recap Quiz

5 Questions

DOM Collections

10 min

DOM Node List

10 min

JS Window

10 min

JS Screen

10 min

JS Location

10 min

Recap Quiz

5 Questions

JS History

10 min

JS Navigator

10 min

JS Popup Alert

10 min

Recap Quiz

5 Questions

JS Timing

10 min

JS Cookies

10 min

JS Callbacks

10 min

JS Asynchronous

10 min

JS Promises

10 min

Recap Quiz

5 Questions

JS Async/Await

10 min

Progress
0%

0 / 92 Lessons

JavaScriptJS Tutorial
Lesson

JS Data Types

10 min reading
Free Course

JavaScript Data Types: Primitives & Reference Types

JavaScript is a dynamically typed language. Data types are categorized into two main groups: Primitive Types (stored directly in stack memory by value) and Reference Types (stored in heap memory and accessed via memory addresses).

Data Types Memory Model

flowchart TD
    Types["JavaScript Data Types"] --> Primitives["Primitive Types (Passed by Value - Stack)"]
    Types --> Reference["Reference Types (Passed by Reference - Heap)"]
    
    Primitives --> P1["String"]
    Primitives --> P2["Number"]
    Primitives --> P3["BigInt"]
    Primitives --> P4["Boolean"]
    Primitives --> P5["Undefined"]
    Primitives --> P6["Null"]
    Primitives --> P7["Symbol"]
    
    Reference --> R1["Object"]
    Reference --> R2["Array"]
    Reference --> R3["Function"]
    Reference --> R4["Date / RegExp"]

Primitive vs Reference Comparison

Property Primitive Types Reference Types
Storage Stack Memory Heap Memory (Pointer stored in Stack)
Immutability Value itself is immutable Properties/elements are mutable
Comparison Compared by Value (5 === 5) Compared by Memory Address ({} === {} is false)
Copying Copying creates an independent value copy Copying duplicates reference pointer

Practical Code Example

// Demonstrating Primitives vs Reference Types

// 1. Primitive Type Copy (Passed by Value)
let originalPrice = 100;
let copiedPrice = originalPrice; // Independent copy
copiedPrice = 150;

console.log(`Original: ${originalPrice}, Copied: ${copiedPrice}`); // 100, 150

// 2. Reference Type Copy (Passed by Memory Reference)
const originalUser = { id: 1, name: "Alex" };
const copiedUser = originalUser; // Copies pointer address
copiedUser.name = "Maksudur";   // Mutates shared heap object!

console.log("Original User Name:", originalUser.name); // "Maksudur" (Mutated!)

// 3. Creating a Shallow Copy to break reference coupling
const clonedUser = { ...originalUser }; // Spread operator shallow clone
clonedUser.name = "Sarah";

console.log("Original User Name:", originalUser.name); // "Maksudur" (Protected!)
console.log("Cloned User Name:", clonedUser.name);     // "Sarah"

// 4. Symbol Primitive (Unique Identifier)
const idSym1 = Symbol("id");
const idSym2 = Symbol("id");
console.log(`Symbol Comparison (idSym1 === idSym2): ${idSym1 === idSym2}`); // false

Best Practices & Gotchas

  • Understand Object Equality: Two objects with identical key-value pairs are NOT equal unless they reference the exact same memory address.
  • Use Spread Operator or structuredClone(): When copying objects/arrays, create shallow copies ({...obj}) or deep clones (structuredClone(obj)) to avoid unintended mutation bugs.
  • typeof null Mystery: typeof null returns "object" due to a historical bug in JavaScript's original implementation. Use val === null to check for null values.

Self-Check Challenge

Explain why [] === [] evaluates to false in JavaScript.

Save Your Progress

Unlock Your
Full Potential.

Sign in to track your learning journey, earn industry-recognized certificates, and join our elite developer community.

Quick Access With

Enterprise-Grade Security Protocol

Recommended Courses & Books

Try it Yourself

Experiment with the code from this lesson in our interactive playground.

Open Playground

Stuck on this lesson?

Join our community of senior developers.

Ask in Forum