Types
There are two data types in JavaScript: primitives and objects. The following are the primitive types:
- boolean
- string
- number
- undefined
- null
- symbol
Primitive vs. Object
Primitive values are atomic data that is passed by value and compared by value. Objects, on the other hand, are compound pieces of data that are passed by reference and compared by reference.
typeof operator
You can check the type of a value by using the typeof operator
console.log(typeof "two"); console.log(typeof 2); console.log(typeof true); console.log(typeof undeclaredVariable); console.log(typeof { value: 2 });
See typeof on MDN web docs for more details.
boolean
The Boolean type is similar to most other programming languages with two options: true or false.
let isRequired = true;
let isOptional = false;
See Boolean on MDN web docs for more details.
string
To be discussed shortly.
number
To be discussed shortly.
Primitive types and their Wrappers
The three primitive types string, number and boolean have corresponding types whose instances are objects: String, Number, Boolean.
const name = "Cao"; const firstname = new String("Cao"); console.log(name); console.log(firstname); console.log(typeof name); console.log(typeof firstname); console.log(name instanceof String); console.log(firstname instanceof String);
You can use the
instanceofoperator to check the type of an object.
undefined and null
JavaScript has two "bottom" values!
- 
An uninitialized variable is undefined.
- 
The nullvalue denotes an "intentionally" absent value.
Although you can, don't deliberately set a value to
undefined
JavaScript has lots of quirks, and a bunch of them are around null and undefined (and how they behave, relate, and differ). We will see some of these in later sections. For now, enjoy this!
console.log(typeof undefined); console.log(typeof null);
For more details, Brandon Morelli has a nice article: JavaScript — Null vs. Undefined. 
For a complete reference, visit null and undefined on MDN web docs.
Symbol
The symbol is a new addition to the JavaScript language, which enables Metaprogramming. It is beyond the scope of this course. You can consult the following resources if you are interested to learn more.