JavaScript Type System
JavaScript has two main categories of values:
- Primitive values
- Objects
Understanding the difference between primitive values and objects is essential for understanding JavaScript.
Primitive Types
JavaScript has 7 primitive types.
| Type | Example | typeof |
|---|---|---|
| string | "Hello" |
"string" |
| number | 123 |
"number" |
| boolean | true |
"boolean" |
| bigint | 123n |
"bigint" |
| symbol | Symbol() |
"symbol" |
| undefined | undefined |
"undefined" |
| null | null |
"object" |
Example
(typeof "Hello") // string
(typeof 1234567) // number
(typeof true) // boolean
(typeof 123456n) // bigint
Try it Yourself »
Note
The result of typeof null is "object".
This is a historical JavaScript error.
Primitive values are not objects.
Built-in Functions
Some built-in JavaScript functions return primitive values:
| Function | Returns |
|---|---|
String(value) |
A primitive string |
Number(value) |
A primitive number |
Boolean(value) |
A primitive boolean |
BigInt(value) |
A primitive bigint |
Symbol(value) |
A primitive symbol |
Lean More:
Objects
All non-primitive values are objects.
Objects store collections of values.
Objects have properties and methods
Arrays, dates, maps, sets, promises, and regular expressions are all objects.
| Object Type | Example |
|---|---|
| Object | {} |
| Array | [] |
| Function | function() {} |
| Date | new Date() |
| RegExp | /abc/ |
| Error | new Error() |
| Promise | new Promise() |
| Map | new Map() |
| Set | new Set() |
| WeakMap | new WeakMap() |
| WeakSet | new WeakSet() |
Built-in Object Constructors
JavaScript provides constructors for creating objects.
| Constructor | Creates |
|---|---|
Object() |
Objects |
Function() |
Function objects |
Array() |
Array objects |
Date() |
Date objects |
RegExp() |
Regular expression objects |
Error() |
Error objects |
Promise() |
Promise objects |
Map() |
Map objects |
Set() |
Set objects |
WeakMap() |
WeakMap objects |
WeakSet() |
WeakSet objects |
Learn More:
Object Hierarchy
Built-in JavaScript objects inherit from Object.
Object
├─ Function
├─ Array
├─ Date
├─ RegExp
├─ Error
├─ Promise
├─ Map
├─ Set
├─ WeakMap
└─ WeakSet
Learn More:
Primitive Values vs Objects
JavaScript provides object wrappers for some primitive types.
| Primitive Type | Wrapper Object |
|---|---|
| string | String |
| number | Number |
| boolean | Boolean |
Example
let a = "Hello";
let b = new String("Hello");
(typeof a) // string
(typeof b) // object
Try it Yourself »
Avoid using wrapper objects.