JavaScript Data Types
Learn JavaScript data types in detail, including primitive and non-primitive types, dynamic typing, typeof, strings, numbers, bigint, booleans, undefined, null, symbols, objects, arrays, functions, and type checking.
Introduction
Every JavaScript program works with data. A user name is text, a product price is a number, a login status is a boolean, a collection of products may be an array, and a complete user profile may be represented as an object.
A data type describes the kind of value stored in a variable. The data type determines what the value represents, how JavaScript handles it, and which operations can be performed on it.
JavaScript has several built-in data types. Some are primitive values such as strings, numbers, booleans, undefined, null, bigint, and symbols. Other values, including objects, arrays, functions, and dates, belong to the broader object category.
Understanding data types is essential because almost every future JavaScript topic depends on them. Operators, type conversion, conditions, loops, functions, arrays, objects, DOM manipulation, JSON, storage, and APIs all work with different kinds of data.
- What a data type is.
- Why programming languages need data types.
- The main categories of JavaScript data types.
- The seven primitive JavaScript data types.
- How non-primitive values work.
- How JavaScript dynamic typing works.
- How to use the typeof operator.
- How strings store text.
- How numbers represent numeric values.
- What NaN and Infinity mean.
- How BigInt stores very large integers.
- How booleans represent true and false.
- The difference between undefined and null.
- Why typeof null returns object.
- How symbols create unique values.
- How objects store structured data.
- How arrays, functions, and dates relate to objects.
- The difference between primitive and reference behavior.
- How to correctly check different data types.
What is a Data Type?
A data type is a classification that describes the kind of value being stored or processed by a program.
const name = 'Rahul';
const age = 22;
const isStudent = true;
console.log(name);
console.log(age);
console.log(isStudent);Although all three values are stored in variables, they represent different kinds of information. The name variable stores text, age stores a numeric value, and isStudent stores a true-or-false value.
Value Data Type
--------------------------------
'Rahul' String
22 Number
true Boolean
undefined Undefined
null Null
123n BigInt
Symbol('id') Symbol
{ name: 'Rahul' } Object- A value contains data.
- A data type describes what kind of data the value represents.
- Different data types support different operations.
- JavaScript automatically determines the type of a value.
Why Do We Need Data Types?
Programs need to understand what kind of information they are processing. Adding two numbers is different from joining two pieces of text. A boolean is useful for making decisions, while an object is useful for storing related information.
Represent Information
Different data types represent text, numbers, logical values, structured records, and other forms of information.
Control Operations
The data type affects which operations can be performed and how operators behave.
Organize Data
Objects and arrays help organize complex collections of related values.
Validate Values
Type checking helps verify that a program receives the kind of data it expects.
Prevent Errors
Understanding types helps prevent unexpected calculations and incorrect comparisons.
Process Real Data
Forms, APIs, databases, and browser storage all provide values that must be handled correctly.
console.log(10 + 20);
console.log('10' + '20');The first expression performs numeric addition because both values are numbers. The second expression joins text because both values are strings.
Real-World Analogy
Think of data types like different kinds of containers in a warehouse. Each container is designed for a particular kind of content.
┌─────────────────────┐
│ Text Container │
│ 'JavaScript' │
│ Type: String │
└─────────────────────┘
┌─────────────────────┐
│ Number Container │
│ 27 │
│ Type: Number │
└─────────────────────┘
┌─────────────────────┐
│ Logic Container │
│ true │
│ Type: Boolean │
└─────────────────────┘
┌─────────────────────┐
│ Structured Container│
│ { name, age } │
│ Type: Object │
└─────────────────────┘Just as different containers are suitable for different materials, different JavaScript data types are suitable for different kinds of information.
JavaScript Data Type Categories
JavaScript data types are commonly divided into two major categories: primitive data types and non-primitive data types.
JavaScript Data Types
│
├── Primitive Types
│ │
│ ├── String
│ ├── Number
│ ├── BigInt
│ ├── Boolean
│ ├── Undefined
│ ├── Null
│ └── Symbol
│
└── Non-Primitive Type
│
└── Object
│
├── Plain Objects
├── Arrays
├── Functions
├── Dates
├── Maps
├── Sets
└── Other ObjectsPrimitive Types
Simple values that are not objects and are generally treated as immutable values.
Non-Primitive Types
Objects that can store collections, structured information, behavior, and more complex data.
Primitive Data Types
Primitive data types represent basic values. JavaScript has seven primitive data types.
const text = 'JavaScript'; // String
const score = 100; // Number
const hugeNumber = 123456789n; // BigInt
const isActive = true; // Boolean
let result; // Undefined
const selectedItem = null; // Null
const uniqueId = Symbol('id'); // Symbol1. String
2. Number
3. BigInt
4. Boolean
5. Undefined
6. Null
7. Symbol- Primitive values are not objects.
- Primitive values represent basic data.
- Primitive values are immutable.
- Variables containing primitive values behave independently when copied.
Non-Primitive Data Types
The main non-primitive type in JavaScript is Object. Objects can store multiple values and create complex data structures.
const user = {
name: 'Rahul',
age: 22
};
const technologies = [
'HTML',
'CSS',
'JavaScript'
];
function greet() {
console.log('Hello');
}
const today = new Date();Object
│
├── Plain Object
│ { name: 'Rahul' }
│
├── Array
│ ['HTML', 'CSS']
│
├── Function
│ function greet() {}
│
└── Date
new Date()Arrays, functions, dates, maps, sets, and many other JavaScript structures are specialized forms of objects, although typeof reports functions as function.
Dynamic Typing
JavaScript is a dynamically typed language. This means a variable does not have one permanently fixed data type. The type belongs to the current value stored in the variable.
let value = 'JavaScript';
console.log(typeof value);
value = 27;
console.log(typeof value);
value = true;
console.log(typeof value);value
│
├── 'JavaScript' → string
│
├── 27 → number
│
└── true → boolean- A variable can hold different types at different times.
- JavaScript determines types during execution.
- Unexpected type changes can cause bugs.
- Use clear variable names and intentional assignments.
The typeof Operator
The typeof operator returns a string describing the type of a value.
console.log(typeof 'JavaScript');
console.log(typeof 27);
console.log(typeof 123n);
console.log(typeof true);
console.log(typeof undefined);
console.log(typeof Symbol('id'));
console.log(typeof {});
console.log(typeof function () {});const courseName = 'JavaScript';
const totalLessons = 27;
const isFree = true;
console.log(typeof courseName);
console.log(typeof totalLessons);
console.log(typeof isFree);- typeof returns a string.
- typeof 10 returns "number".
- typeof true returns "boolean".
- typeof {} returns "object".
- typeof null unexpectedly returns "object".
1. String
A string represents textual data. Strings can contain letters, numbers, spaces, symbols, words, sentences, or any other sequence of characters.
const firstName = 'Rahul';
const course = "JavaScript";
const message = `Welcome to PrograMinds`;
console.log(firstName);
console.log(course);
console.log(message);const language = 'JavaScript';
console.log(typeof language);Creating Strings
JavaScript strings can be created using single quotes, double quotes, or backticks.
const singleQuote = 'JavaScript';
const doubleQuote = "JavaScript";
const templateLiteral = `JavaScript`;
console.log(singleQuote);
console.log(doubleQuote);
console.log(templateLiteral);Backticks create template literals, which support embedded expressions and multi-line strings.
const name = 'Rahul';
const course = 'JavaScript';
const message = `Hello ${name}, welcome to ${course}!`;
console.log(message);String Examples
const name = 'Rahul';
const city = 'Mumbai';
const phone = '9876543210';
const emptyText = '';
const sentence = 'JavaScript is powerful!';
console.log(typeof name);
console.log(typeof city);
console.log(typeof phone);
console.log(typeof emptyText);
console.log(typeof sentence);- A numeric-looking value inside quotes is still a string.
- An empty string is still a string.
- Spaces and symbols can be part of strings.
- Strings will be covered in detail in Lesson 16.
2. Number
The Number data type represents numeric values. JavaScript uses the same Number type for most integers and decimal numbers.
const age = 22;
const price = 499.99;
const temperature = -5;
const zero = 0;
console.log(typeof age);
console.log(typeof price);
console.log(typeof temperature);
console.log(typeof zero);- Most whole numbers use the Number type.
- Decimal values also use the Number type.
- Negative numbers use the Number type.
- Special values such as NaN and Infinity also have typeof "number".
Integer and Decimal Numbers
Unlike some programming languages, JavaScript does not normally use separate basic types such as int, float, and double for regular numeric values.
const totalStudents = 100;
const productPrice = 499.99;
console.log(typeof totalStudents);
console.log(typeof productPrice);100 ─────┐
│
499.99 ───────┼──▶ Number
│
-25 ───────┤
│
0 ───────┘Special Number Values
JavaScript includes special numeric values such as NaN, Infinity, and negative Infinity.
const invalidNumber = NaN;
const positiveInfinity = Infinity;
const negativeInfinity = -Infinity;
console.log(typeof invalidNumber);
console.log(typeof positiveInfinity);
console.log(typeof negativeInfinity);NaN
NaN means Not-a-Number. It represents an invalid or unsuccessful numeric result, but its JavaScript type is still number.
const result = 0 / 0;
console.log(result);
console.log(typeof result);const result = Number('Hello');
console.log(result);NaN has unusual comparison behavior. It is not equal to itself.
console.log(NaN === NaN);const result = Number('Hello');
console.log(Number.isNaN(result));Infinity
Infinity represents a numeric value greater than any finite number. JavaScript also supports negative Infinity.
const positive = 1 / 0;
const negative = -1 / 0;
console.log(positive);
console.log(negative);console.log(typeof Infinity);3. BigInt
BigInt represents integer values that may be larger than the safely representable integer range of the Number type.
const hugeNumber = 123456789012345678901234567890n;
console.log(hugeNumber);
console.log(typeof hugeNumber);A BigInt literal is commonly created by placing the letter n after an integer.
const value1 = 100n;
const value2 = BigInt(200);
console.log(value1);
console.log(value2);- BigInt represents integers.
- A BigInt literal ends with n.
- BigInt and Number cannot be freely mixed in arithmetic.
- Convert values explicitly when appropriate.
Number vs BigInt
Feature Number BigInt
------------------------------------------------
Example 100 100n
typeof number bigint
Decimals Yes No
Very Large Integers Limited Supported
Literal Suffix None nconst regularNumber = 10;
const bigNumber = 20n;
console.log(regularNumber + bigNumber);4. Boolean
The Boolean data type has only two possible values: true and false.
const isLoggedIn = true;
const hasPermission = false;
console.log(isLoggedIn);
console.log(hasPermission);
console.log(typeof isLoggedIn);Booleans are commonly used for decisions, conditions, status flags, validation results, and application state.
Authentication
Represent whether a user is logged in.
Visibility
Represent whether an element should be shown.
Validation
Represent whether input is valid.
Settings
Represent enabled or disabled options.
Boolean Values from Comparisons
Comparison expressions produce boolean results.
console.log(10 > 5);
console.log(10 < 5);
console.log(10 === 10);
console.log(10 === 20);const age = 22;
const isAdult = age >= 18;
console.log(isAdult);5. Undefined
undefined represents the absence of an assigned value. A variable declared with let or var but not given a value automatically contains undefined.
let userName;
console.log(userName);
console.log(typeof userName);let userName;
│
▼
Variable Exists
│
▼
No Value Assigned
│
▼
undefinedA function that does not explicitly return a value also returns undefined.
function greet() {
console.log('Hello');
}
const result = greet();
console.log(result);6. Null
null represents an intentional absence of a value. Developers commonly assign null when a variable deliberately has no meaningful object or value at the moment.
const selectedProduct = null;
console.log(selectedProduct);let currentUser = null;
console.log(currentUser);
// Later
currentUser = {
name: 'Rahul'
};
console.log(currentUser);Undefined vs Null
undefined and null both represent missing values, but they are normally used differently.
Feature undefined null
-------------------------------------------------
Meaning Not assigned Intentionally empty
Common Source JavaScript Developer
typeof undefined object
Primitive? Yes Yes
Example let value; let value = null;let firstValue;
let secondValue = null;
console.log(firstValue);
console.log(secondValue);- undefined usually means a value has not been assigned.
- null usually means no value was intentionally assigned.
- Both represent absence in different ways.
- Their types and comparison behavior differ.
The typeof null Behavior
One of the most famous unusual behaviors in JavaScript is that typeof null returns object.
console.log(typeof null);Despite this output, null is a primitive value. The result is a historical behavior preserved for compatibility with existing JavaScript code.
- null is a primitive value.
- typeof null returns "object".
- This is a historical JavaScript behavior.
- Check null directly using value === null.
7. Symbol
A Symbol is a primitive value designed to create unique identifiers. Symbols are often used as unique object property keys and in advanced JavaScript features.
const id = Symbol('id');
console.log(id);
console.log(typeof id);The text passed to Symbol is an optional description that helps developers identify the symbol during debugging.
Symbol Uniqueness
Every Symbol() call creates a new unique symbol, even when the descriptions are identical.
const id1 = Symbol('id');
const id2 = Symbol('id');
console.log(id1 === id2);const userId = Symbol('userId');
const user = {
name: 'Rahul',
[userId]: 101
};
console.log(user[userId]);8. Object
An object stores related data using key-value pairs. Objects are one of the most important data structures in JavaScript.
const student = {
name: 'Rahul',
age: 22,
course: 'JavaScript',
isActive: true
};
console.log(student);const student = {
name: 'Rahul'
};
console.log(typeof student);Object Properties
Each object property contains a key and a value. Different properties can contain different data types.
const course = {
name: 'JavaScript',
totalLessons: 27,
isFree: true,
instructor: null,
topics: ['Variables', 'Constants', 'Data Types']
};
console.log(course);course
│
├── name → String
├── totalLessons → Number
├── isFree → Boolean
├── instructor → Null
└── topics → ArrayAccessing Object Values
Object values can commonly be accessed using dot notation or bracket notation.
const student = {
name: 'Rahul',
age: 22
};
console.log(student.name);
console.log(student['age']);Objects will be covered in detail in Lesson 18.
Arrays
An array is a specialized object used to store an ordered collection of values.
const technologies = [
'HTML',
'CSS',
'JavaScript'
];
console.log(technologies);
console.log(typeof technologies);Because arrays are specialized objects, typeof an array returns object.
const technologies = ['HTML', 'CSS'];
console.log(Array.isArray(technologies));- typeof [] returns "object".
- Use Array.isArray() to check whether a value is an array.
- Arrays can store values of different types.
- Arrays will be covered in detail in Lesson 17.
Functions
Functions are callable objects in JavaScript. The typeof operator returns function for function values.
function greet() {
return 'Hello';
}
console.log(typeof greet);const add = function (a, b) {
return a + b;
};
console.log(typeof add);
console.log(add(10, 20));Functions will be covered in detail in Lesson 13.
Dates
JavaScript provides the Date object for working with dates and times.
const today = new Date();
console.log(typeof today);
console.log(today instanceof Date);The Date object will be covered in detail in Lesson 19.
Primitive vs Reference Values
Primitive and object values behave differently when variables are copied. This difference is essential for understanding JavaScript programs.
Primitive Values
--------------------------------
String
Number
BigInt
Boolean
Undefined
Null
Symbol
Copied as independent values.
Reference Values
--------------------------------
Objects
Arrays
Functions
Dates
Variables may refer to the same object.Primitive Behavior
Copying a primitive value creates an independent value for the new variable.
Reference Behavior
Copying an object reference can make two variables refer to the same object.
Copying Primitive Values
When a primitive value is copied from one variable to another, changing one variable does not change the other.
let firstScore = 100;
let secondScore = firstScore;
secondScore = 200;
console.log(firstScore);
console.log(secondScore);Initial State
firstScore → 100
Copy
secondScore → 100
After Change
firstScore → 100
secondScore → 200
Independent Values ✅Copying Reference Values
When an object reference is copied, both variables can refer to the same object. A mutation through one variable can therefore be visible through the other.
const firstUser = {
name: 'Rahul'
};
const secondUser = firstUser;
secondUser.name = 'Amit';
console.log(firstUser.name);
console.log(secondUser.name);firstUser ───────┐
│
▼
┌──────────────┐
│ name: Rahul │
└──────────────┘
▲
│
secondUser ──────┘
After Mutation
┌──────────────┐
│ name: Amit │
└──────────────┘
Both variables observe the change.- Primitive values are copied independently.
- Objects are accessed through references.
- Two variables can refer to the same object.
- Mutating the shared object affects what both variables observe.
Checking Data Types
JavaScript provides several techniques for checking the type or structure of a value.
const name = 'Rahul';
const age = 22;
const isActive = true;
console.log(typeof name === 'string');
console.log(typeof age === 'number');
console.log(typeof isActive === 'boolean');function showType(value) {
console.log('Value:', value);
console.log('Type:', typeof value);
}
showType('JavaScript');
showType(27);
showType(true);Checking Arrays
The typeof operator cannot distinguish a normal object from an array because both return object.
console.log(typeof {});
console.log(typeof []);Use Array.isArray() when you specifically need to check whether a value is an array.
const user = {
name: 'Rahul'
};
const technologies = [
'HTML',
'CSS',
'JavaScript'
];
console.log(Array.isArray(user));
console.log(Array.isArray(technologies));Checking null
Because typeof null returns object, the safest simple way to check specifically for null is strict equality.
const selectedUser = null;
console.log(selectedUser === null);function isObject(value) {
return typeof value === 'object' && value !== null;
}
console.log(isObject({}));
console.log(isObject(null));JavaScript Data Type Comparison
Value Data Type typeof Result
---------------------------------------------------------
'JavaScript' String string
27 Number number
27.5 Number number
123n BigInt bigint
true Boolean boolean
false Boolean boolean
undefined Undefined undefined
null Null object
Symbol('id') Symbol symbol
{} Object object
[] Array object
function () {} Function function
new Date() Date object- Use typeof for most primitive types.
- Use Array.isArray() for arrays.
- Use value === null for null.
- Use Number.isNaN() for NaN.
- Use instanceof when checking certain object instances such as Date.
- Remember that typeof null returns "object".
Complete Data Types Example
The following example combines the major JavaScript data types in a simple course management program.
// String
const courseName = 'Core JavaScript';
// Number
const totalLessons = 27;
// BigInt
const courseId = 9007199254740993n;
// Boolean
const isFree = true;
// Undefined
let certificateNumber;
// Null
let currentInstructor = null;
// Symbol
const internalId = Symbol('courseId');
// Object
const course = {
name: courseName,
lessons: totalLessons,
free: isFree
};
// Array
const completedTopics = [
'Introduction',
'History',
'JavaScript Engine',
'How JavaScript Works',
'Variables',
'Constants'
];
// Function
function showCourse() {
console.log('Course:', course.name);
console.log('Lessons:', course.lessons);
console.log('Free:', course.free);
}
console.log('Course Name Type:', typeof courseName);
console.log('Lessons Type:', typeof totalLessons);
console.log('Course ID Type:', typeof courseId);
console.log('Free Type:', typeof isFree);
console.log('Certificate Type:', typeof certificateNumber);
console.log('Instructor:', currentInstructor);
console.log('Symbol Type:', typeof internalId);
console.log('Course Type:', typeof course);
console.log('Is Topics Array:', Array.isArray(completedTopics));
console.log('Function Type:', typeof showCourse);
showCourse();Course Application
│
├── courseName ───────▶ String
├── totalLessons ─────▶ Number
├── courseId ─────────▶ BigInt
├── isFree ───────────▶ Boolean
├── certificateNumber ▶ Undefined
├── currentInstructor ▶ Null
├── internalId ───────▶ Symbol
├── course ───────────▶ Object
├── completedTopics ──▶ Array
└── showCourse ───────▶ FunctionReal-World Applications
Every real JavaScript application combines multiple data types.
User Profiles
Strings store names, numbers store ages, booleans store status, and objects combine the complete profile.
E-Commerce
Numbers store prices, strings store product names, arrays store products, and objects represent individual products.
Authentication
Booleans represent login state while null may represent the absence of a current user.
API Data
API responses commonly contain strings, numbers, booleans, null values, arrays, and objects.
Forms
Form inputs commonly begin as strings and may require conversion into numbers or other types.
Games
Numbers store scores, booleans store game states, and objects represent players.
Dashboards
Numbers represent statistics while arrays and objects organize complex datasets.
Browser Storage
Storage systems work with strings and often require objects to be converted to and from JSON.
const user = {
id: 101,
name: 'Rahul',
email: 'rahul@example.com',
isLoggedIn: true,
lastLogin: null,
skills: ['HTML', 'CSS', 'JavaScript']
};
console.log(user);Common Beginner Mistakes
- Thinking numbers inside quotes are Number values.
- Assuming JavaScript has separate int and float primitive types.
- Thinking NaN has a type other than number.
- Comparing NaN using NaN === NaN.
- Mixing BigInt and Number directly in arithmetic.
- Thinking undefined and null are exactly the same.
- Assuming typeof null returns null.
- Thinking null is actually an object because typeof returns object.
- Using typeof to distinguish arrays from normal objects.
- Forgetting that functions return typeof "function".
- Thinking arrays are primitive values.
- Thinking objects are copied independently like primitives.
- Mutating a shared object without realizing another variable refers to it.
- Changing variable types unnecessarily because JavaScript is dynamically typed.
- Using typeof value === "array".
- Using typeof alone to check for null.
- Assuming all objects are plain objects.
- Ignoring unexpected types received from forms, APIs, or storage.
// ❌ This is a string, not a number
const age = '22';
// ❌ NaN is not equal to itself
console.log(NaN === NaN);
// ❌ typeof does not return "array"
console.log(typeof []);
// ❌ typeof null returns "object"
console.log(typeof null);
// ❌ Cannot directly mix Number and BigInt
console.log(10 + 20n);Best Practices
- Understand the type of data stored in each variable.
- Use meaningful variable names that indicate the purpose of the value.
- Use typeof for basic type checking.
- Use Array.isArray() when checking arrays.
- Use value === null when checking specifically for null.
- Use Number.isNaN() when checking for NaN.
- Do not assume a numeric-looking string is a number.
- Convert external data explicitly when necessary.
- Avoid unnecessary changes between unrelated data types.
- Use booleans for true-or-false states.
- Use null intentionally when representing an expected absence of value.
- Understand when undefined is produced automatically.
- Use BigInt only when large integer requirements justify it.
- Do not directly mix BigInt and Number arithmetic.
- Remember that arrays and functions belong to the object family.
- Understand primitive copying behavior.
- Understand shared references before modifying objects and arrays.
- Validate data received from users, APIs, browser storage, and external systems.
- Do not rely on typeof alone for every type-checking situation.
- Choose data structures according to the information being represented.
const name = 'Rahul';
const age = 22;
const technologies = ['HTML', 'CSS'];
const selectedUser = null;
console.log(typeof name === 'string');
console.log(typeof age === 'number');
console.log(Array.isArray(technologies));
console.log(selectedUser === null);Frequently Asked Questions
What is a data type?
A data type describes the kind of value stored or processed by a program.
How many primitive data types does JavaScript have?
JavaScript has seven primitive data types: String, Number, BigInt, Boolean, Undefined, Null, and Symbol.
What is the main non-primitive data type?
Object is the main non-primitive data type in JavaScript.
Is JavaScript dynamically typed?
Yes. A variable can store values of different types at different times.
What does typeof do?
The typeof operator returns a string describing the type of a value.
What is the typeof result for a string?
It returns "string".
What is the typeof result for a number?
It returns "number".
Are integers and decimals different data types in JavaScript?
No. Regular integers and decimal values both normally use the Number type.
What is NaN?
NaN means Not-a-Number and represents an invalid numeric result.
What is the type of NaN?
typeof NaN returns "number".
How should I check for NaN?
Number.isNaN() is commonly used to check whether a value is the NaN value.
What is BigInt?
BigInt is a primitive type used for integer values that may exceed the safely representable integer range of Number.
Can Number and BigInt be directly mixed in arithmetic?
No. They generally require explicit conversion to compatible types before arithmetic.
What is a Boolean?
A Boolean is a data type with only two values: true and false.
What is undefined?
undefined commonly represents a variable or result for which no value has been assigned.
What is null?
null commonly represents an intentional absence of a value.
Are null and undefined the same?
No. They are different primitive values with different typical meanings and types.
Why does typeof null return object?
It is a historical JavaScript behavior preserved for compatibility. null itself is still a primitive value.
What is a Symbol?
A Symbol is a primitive value commonly used to create unique identifiers.
Are two Symbols with the same description equal?
No. Each normal Symbol() call creates a unique value.
What is an object?
An object is a non-primitive value that can store related information using properties.
Are arrays objects?
Yes. Arrays are specialized objects used for ordered collections.
Why does typeof an array return object?
Arrays belong to the object category in JavaScript.
How do I check whether a value is an array?
Use Array.isArray(value).
What does typeof a function return?
It returns "function".
Are primitive values copied independently?
Yes. Copying a primitive value gives the new variable an independent primitive value.
Can two variables refer to the same object?
Yes. Copying an object reference can make both variables refer to the same object.
How do I check specifically for null?
Use strict equality, such as value === null.
Key Takeaways
- A data type describes the kind of value being stored or processed.
- JavaScript has primitive and non-primitive data types.
- JavaScript has seven primitive data types.
- The primitive types are String, Number, BigInt, Boolean, Undefined, Null, and Symbol.
- Object is the main non-primitive type.
- Arrays, functions, and dates belong to the broader object family.
- JavaScript is dynamically typed.
- The type belongs to the current value, not permanently to the variable.
- The typeof operator helps inspect data types.
- Strings represent textual data.
- Numbers represent regular numeric values.
- JavaScript normally uses Number for both integers and decimals.
- NaN represents an invalid numeric result.
- typeof NaN returns "number".
- Infinity and -Infinity are special Number values.
- BigInt represents large integer values.
- BigInt literals commonly end with n.
- Number and BigInt cannot be directly mixed in normal arithmetic.
- Booleans contain true or false.
- undefined commonly represents an unassigned value.
- null commonly represents an intentional absence of value.
- typeof null returns "object" because of historical behavior.
- null is still a primitive value.
- Symbols create unique primitive values.
- Objects store structured information using properties.
- typeof an array returns "object".
- Use Array.isArray() to identify arrays.
- typeof a function returns "function".
- Primitive values behave independently when copied.
- Copied object references can refer to the same object.
- Mutating a shared object can be observed through multiple variables.
- Use appropriate type-checking techniques for different values.
Summary
Data types are fundamental to JavaScript because every value belongs to a particular type. The type determines what kind of information the value represents and how JavaScript can work with it.
JavaScript has seven primitive data types: String, Number, BigInt, Boolean, Undefined, Null, and Symbol. These types represent basic values such as text, numeric information, logical states, missing values, and unique identifiers.
Objects are the main non-primitive type. Plain objects, arrays, functions, dates, maps, sets, and many other structures belong to the broader object system. Objects allow JavaScript programs to represent complex and structured information.
JavaScript is dynamically typed, which means a variable can hold values of different types at different times. This flexibility is powerful, but developers must understand and manage types carefully to avoid unexpected behavior.
The typeof operator is useful for identifying many types, but it has important limitations. typeof null returns object, and typeof arrays also returns object. Therefore, null should be checked directly and arrays should be checked using Array.isArray().
Primitive and reference behavior is another essential distinction. Primitive values behave independently when copied, while multiple variables can refer to the same object. Mutating a shared object can therefore affect what multiple variables observe.
- You understand what data types are.
- You know why programs need different data types.
- You know the primitive and non-primitive categories.
- You know all seven primitive JavaScript data types.
- You understand JavaScript dynamic typing.
- You know how to use the typeof operator.
- You understand strings and numbers.
- You understand NaN and Infinity.
- You understand the purpose of BigInt.
- You understand boolean values.
- You know the difference between undefined and null.
- You understand the unusual typeof null behavior.
- You understand Symbol values.
- You understand objects and object properties.
- You know that arrays are specialized objects.
- You know how functions and dates are classified.
- You understand primitive and reference behavior.
- You know how to check common JavaScript data types.
- You are ready to learn JavaScript Type Conversion.