Skip to content

Primitive types vs objects in JavaScript

What is the main difference between primitive types and objects in JavaScript?

First, let's define what are primitive types.

Primitive types in JavaScript are

  • strings
  • numbers (Number and BigInt)
  • booleans (true or false)
  • undefined
  • Symbol values

null is a special primitive type. If you run typeof null you'll get 'object' back, but it's actually a primitive type.

Everything that is not a primitive type is an object.

Functions are objects, too. We can set properties and method on functions. typeof will return 'function' but the Function constructor derives from the Object constructor.

The big differences between primitive types and objects are

  • primitive types are immutable, objects only have an immutable reference, but their value can change over time
  • primitive types are passed by value. Objects are passed by reference
  • primitive types are copied by value. Objects are copied by reference
  • primitive types are compared by value. Objects are compared by reference

If we copy a primitive type in this way:

let name = 'Flavio'
let secondName = name

Now we can change the name variable assigning it a new value, but secondName still holds the old value, because it was copied by value:

name = 'Roger'
secondName //'Flavio'

If we have an object:

let car = {
  color: 'yellow'
}

and we copy it to another variable:

let car = {
  color: 'yellow'
}

let anotherCar = car

in this case anotherCar points to the same object as car. If you set

car.color = 'blue'

also

anotherCar.color

will be 'blue'.

The same works for passing around objects to functions, and for comparing.

Say we want to compare car to anotherCar:

anotherCar === car //true

This is true because both variables point to exactly the same object.

But if anotherCar was an object with the same properties as car, comparing them would give a false result:

let car = {
  color: 'yellow'
}

let anotherCar = {
  color: 'yellow'
}

anotherCar === car //false
→ Download my free JavaScript Handbook!

THE VALLEY OF CODE

THE WEB DEVELOPER's MANUAL

You might be interested in those things I do:

  • Learn to code in THE VALLEY OF CODE, your your web development manual
  • Find a ton of Web Development projects to learn modern tech stacks in practice in THE VALLEY OF CODE PRO
  • I wrote 16 books for beginner software developers, DOWNLOAD THEM NOW
  • Every year I organize a hands-on cohort course coding BOOTCAMP to teach you how to build a complex, modern Web Application in practice (next edition February-March-April-May 2024)
  • Learn how to start a solopreneur business on the Internet with SOLO LAB (next edition in 2024)
  • Find me on X

Related posts that talk about js: