JavaScript tutorials > JavaScript Basics > Data Types & Variables > What are the different data types in JavaScript?
What are the different data types in JavaScript?
JavaScript data types are classifications that specify which type of value a variable has and what type of operations can be performed on it. Understanding data types is fundamental to writing effective and error-free JavaScript code. This tutorial explores the various data types in JavaScript, providing clear explanations and examples for each.
Introduction to JavaScript Data Types
JavaScript is a dynamically typed language, which means you don't need to explicitly declare the data type of a variable. The JavaScript engine infers the type based on the value assigned to the variable. JavaScript has both primitive and non-primitive (reference) data types.
Primitive Data Types
Primitive data types are immutable, meaning their values cannot be changed after creation. They are passed by value. JavaScript has the following primitive data types:true
or false
.
String Data Type
A string is a sequence of characters enclosed in single quotes ('
), double quotes ("
), or backticks (`
). Backticks are used for template literals, which allow for string interpolation.
let myString = "Hello, world!";
let anotherString = 'JavaScript is fun!';
Number Data Type
The number type represents both integer and floating-point numbers. JavaScript doesn't distinguish between integer and floating-point types; all numbers are represented internally as double-precision 64-bit floating-point values (IEEE 754 standard).
let myNumber = 42;
let myFloat = 3.14;
let myNegative = -10;
BigInt Data Type
The BigInt
type represents integers that are larger than the maximum number JavaScript can reliably represent with the Number
type (Number.MAX_SAFE_INTEGER
). You create a BigInt
by appending n
to the end of an integer literal.
let myBigInt = 9007199254740991n;
Boolean Data Type
The boolean type represents a logical value, which can be either true
or false
. Booleans are often used in conditional statements and logical operations.
let isTrue = true;
let isFalse = false;
Undefined Data Type
A variable that has been declared but has not been assigned a value has the value undefined
. It means the variable exists, but it doesn't have a specific value yet.
let myVariable;
console.log(myVariable); // Output: undefined
Null Data Type
The null
value represents the intentional absence of any object value. It's different from undefined
because null
is explicitly assigned to a variable to indicate that it has no value.
let myNullValue = null;
Symbol Data Type
The Symbol
type is a unique and immutable primitive value. Symbols are often used as object property keys to avoid naming conflicts.
const mySymbol = Symbol('mySymbol');
const anotherSymbol = Symbol('mySymbol');
console.log(mySymbol === anotherSymbol); // Output: false
Non-Primitive Data Types (Reference Types)
Non-primitive data types are mutable, meaning their values can be changed after creation. They are passed by reference. The main non-primitive data type in JavaScript is:
Object Data Type
An object is a collection of key-value pairs, where keys are strings (or Symbols) and values can be any data type. Arrays and functions are special types of objects in JavaScript.
let myObject = {
name: 'John',
age: 30,
city: 'New York'
};
let myArray = [1, 2, 3, 4, 5];
function myFunction() {
console.log('Hello!');
}
Checking Data Types with typeof
The typeof
operator returns a string indicating the data type of a value. Note that typeof null
returns 'object'
, which is a historical quirk of JavaScript.
console.log(typeof 'Hello'); // Output: string
console.log(typeof 42); // Output: number
console.log(typeof true); // Output: boolean
console.log(typeof undefined); // Output: undefined
console.log(typeof null); // Output: object (historical quirk)
console.log(typeof {}); // Output: object
console.log(typeof []); // Output: object
console.log(typeof function() {}); // Output: function
Concepts Behind the Snippet
Understanding data types is crucial for performing correct operations and avoiding unexpected behavior in JavaScript. Different data types have different properties and behaviors. Knowing how to identify and use each type is essential for effective programming.
Real-Life Use Case Section
Imagine building a form on a website. You'd use strings to store user names and addresses, numbers to store ages and quantities, booleans to represent user preferences (like whether they want to receive emails), and objects to store entire user profiles or product details.
Best Practices
undefined
values.===
) to compare values of the same type and avoid type coercion issues.null
and undefined
.BigInt
type to prevent precision loss.
Interview Tip
Be prepared to explain the difference between primitive and non-primitive data types. Also, know the common data types and how to check the type of a variable using the typeof
operator. Understanding type coercion is also a common interview topic.
When to use them
Memory Footprint
Primitive data types generally consume less memory compared to non-primitive data types. Objects can take up significant memory, especially if they contain many properties or nested objects. Understanding memory usage is important for optimizing performance, especially when dealing with large datasets.
Alternatives (for some data types)
While the basic data types are standard, you might sometimes consider alternatives depending on the situation:string.js
can offer extended functionalities.decimal.js
or big.js
can be used.
Pros and Cons (of dynamic typing)
Pros of Dynamic Typing (JavaScript): Cons of Dynamic Typing (JavaScript):
FAQ
-
What is the difference between
null
andundefined
?
undefined
means a variable has been declared but has not been assigned a value.null
is an assignment value. It means a variable has been explicitly assigned the value ofnull
, representing 'no value'. -
Why does
typeof null
return'object'
?
This is a historical bug in JavaScript. It's been known for a long time, but it can't be fixed without breaking existing code that relies on this behavior. Always be aware of this quirk when checking for
null
values. -
What are the primitive data types in JavaScript?
The primitive data types are: String, Number, BigInt, Boolean, Undefined, Null, and Symbol.
-
What is a dynamically typed language?
A dynamically typed language is one where the data type of a variable is checked during runtime instead of compile time. JavaScript is a dynamically typed language.