Default Parameters
This lesson explains Default Parameters with clear examples, use cases, and best practices so you can use modern JavaScript confidently in real projects.
ES6 Default Parameters Overview
ES6 introduced default parameters, allowing function
parameters to have predefined values when an argument is not supplied or
is undefined. This eliminates the need for manual checks and
makes functions cleaner and easier to maintain.
Default parameters are commonly used in utility functions, API helpers, configuration objects, React components, Node.js applications, and reusable libraries.
| Feature | Description |
|---|---|
| Purpose | Provide fallback values for missing arguments. |
| Introduced | ES6 (ECMAScript 2015) |
| Applied When | Argument is omitted or undefined. |
| Common Uses | Configuration, options, API requests, reusable functions. |
| Benefit | Cleaner, safer, and more readable code. |
Basic Default Parameter
function greet(
name = "Guest"
) {
return "Hello " + name;
}
console.log(
greet()
);
console.log(
greet("John")
); When no argument is passed, the default value is used.
Before ES6
function greet(name) {
name =
name || "Guest";
return "Hello " + name;
} Before ES6, developers often used the logical OR operator to provide fallback values. Default parameters make this unnecessary.
Multiple Default Parameters
function createUser(
name = "Guest",
role = "User",
active = true
) {
return
{
name,
role,
active
};
}
console.log(
createUser()
); Passing undefined
function calculate(
tax = 10
) {
return tax;
}
console.log(
calculate(undefined)
);
// 10
Passing undefined triggers the default value.
Passing null
function calculate(
tax = 10
) {
return tax;
}
console.log(
calculate(null)
);
// null null is considered a valid value, so the default parameter
is not applied.
Using Expressions as Default Values
function calculate(
amount,
tax = amount * 0.10
) {
return amount + tax;
}
console.log(
calculate(100)
); Default values can use previously declared parameters.
Using Function Calls as Default Values
function generateId() {
return Date.now();
}
function createOrder(
id = generateId()
) {
return id;
} The function executes only when the parameter value is missing.
Default Array Parameter
function addItems(
items = []
) {
items.push("Laptop");
return items;
} Default Object Parameter
function createConfig(
options = {
theme: "light",
language: "en"
}
) {
return options;
} Destructuring with Default Parameters
function displayUser(
{
name = "Guest",
age = 18
} = {}
) {
console.log(name);
console.log(age);
}
displayUser(); This is a common pattern when working with configuration objects.
Default Parameters with Rest Parameters
function multiply(
multiplier = 2,
...numbers
) {
return numbers.map(
number =>
number * multiplier
);
} Arrow Functions with Default Parameters
const greet = (
name = "Guest"
) =>
"Hello " + name; Constructor Default Parameters
class User {
constructor(
name = "Guest",
role = "User"
) {
this.name = name;
this.role = role;
}
}
const user =
new User(); Real World Example - API Request
function fetchUsers(
page = 1,
limit = 20
) {
return fetch(
"/users?page=" +
page +
"&limit=" +
limit
);
} Pagination Example
function loadProducts(
page = 1,
size = 25
) {
console.log(page);
console.log(size);
}
loadProducts(); Configuration Example
function initializeApp(
options = {
darkMode: false,
language: "en"
}
) {
console.log(options);
} React Style Example
function Button(
{
color = "blue",
size = "medium"
}
) {
return color;
} Dependent Default Parameters
function createRectangle(
width,
height = width
) {
return width * height;
}
console.log(
createRectangle(10)
); Default Values Are Evaluated at Call Time
function randomNumber() {
return Math.random();
}
function generate(
value = randomNumber()
) {
return value;
} The default function executes each time the parameter is omitted.
Parameter Order
function register(
name,
role = "User",
active = true
) {
} Required parameters should appear before optional parameters.
ES5 vs ES6
| ES5 | ES6 |
|---|---|
| Manual fallback logic. | Built-in default parameters. |
| Longer code. | Cleaner syntax. |
| Often uses || operator. | Supports expressions directly. |
| Harder to maintain. | More readable. |
Common Use Cases
- API requests.
- Configuration objects.
- Pagination.
- Reusable utility functions.
- Class constructors.
- React components.
- Node.js services.
- Validation helpers.
- Formatting functions.
- Application initialization.
Common Mistakes
- Passing
nullexpecting the default value. - Using mutable objects carelessly as defaults.
- Using expensive computations unnecessarily.
- Placing required parameters after optional ones.
- Ignoring parameter order.
- Using logical OR instead of default parameters.
- Writing complex expressions inside parameter lists.
- Confusing
undefinedandnull.
Best Practices
- Use default parameters instead of manual fallback logic.
- Keep default values simple.
- Place required parameters first.
- Use options objects for many optional values.
- Use destructuring with defaults.
- Validate incoming data when needed.
- Avoid unnecessary computations in defaults.
- Write self-documenting parameter names.
- Prefer readability over clever syntax.
- Document optional parameters clearly.
Interview Questions
- What are default parameters?
- When are default values applied?
- What is the difference between
nullandundefined? - Can default values depend on earlier parameters?
- Can functions be used as default values?
- Can constructors use default parameters?
- What happens when passing
undefined? - Why are default parameters preferred over the || operator?
- Can default values use destructuring?
- What are common mistakes with default parameters?
Pro Tip
Use default parameters instead of manual fallback logic because they are
more readable, avoid accidental replacement of valid values such as
0 or an empty string, and clearly communicate which arguments
are optional. For functions with many optional settings, combine default
parameters with an options object and destructuring for maximum
flexibility.