Default Parameters in ES6
ES6 (ECMAScript 2015) introduced several new features to JavaScript, and one of the notable additions is the support for default function parameters. Default parameters allow you to specify default values for function arguments when they are not explicitly provided.
In JavaScript, when a function is invoked, it is possible to pass arguments to the function. However, if an argument is not provided, JavaScript assigns the value undefined
to that argument. This can sometimes lead to unexpected behavior if your function relies on specific values for its arguments.
With default parameters in ES6, you have the ability to define default values for these arguments, ensuring that your functions behave as expected even when certain arguments are not passed. Let's take a closer look at how default parameters work in ES6.
Basic Syntax
To define a default parameter for a function, you can assign a value directly to the parameter in the function's declaration. Here's an example:
function greet(name = 'Anonymous') {
console.log('Hello, ' + name + '!');
}
greet('John'); // Output: Hello, John!
greet(); // Output: Hello, Anonymous!
In this example, the greet
function has a single parameter named name
. We have assigned the default value of 'Anonymous'
to the name
parameter by using the assignment operator (=).
When the greet
function is invoked without any arguments, the default parameter 'Anonymous'
is used, and the output is 'Hello, Anonymous!'
. However, if we pass an argument, such as 'John'
, the value of name
becomes 'John'
, and the output is 'Hello, John!'
.
Applying Default Parameters
Default parameters can be applied to any parameter in a function. They are especially useful when you have functions with multiple arguments and want to provide fallback values for some of them.
function calculatePrice(quantity, pricePerUnit = 10) {
return quantity * pricePerUnit;
}
console.log(calculatePrice(5)); // Output: 50
console.log(calculatePrice(3, 15)); // Output: 45
In this example, the calculatePrice
function takes two parameters: quantity
and pricePerUnit
. The pricePerUnit
parameter has a default value of 10
. If the pricePerUnit
argument is not passed, the function uses the default value of 10
instead. When we invoke the calculatePrice
function with quantity = 5
, it uses the default pricePerUnit
of 10
and returns 50
. When we pass quantity = 3
and pricePerUnit = 15
, the function calculates and returns 45
.
Default Parameter Expressions
Default parameter values can also be expressions or function calls. This means that you can use functions and operations to compute default values dynamically.
function greet(name = getName()) {
console.log('Hello, ' + name + '!');
}
function getName() {
return 'Anonymous';
}
greet(); // Output: Hello, Anonymous!
In this example, the default value for the name
parameter is the result of calling the getName
function. When the greet
function is invoked without an argument, it uses the default value returned by getName()
, resulting in the output 'Hello, Anonymous!'
. This demonstrates the flexibility of default parameter expressions in JavaScript.
Undefined vs. Default Parameters
One important thing to note is that providing undefined explicitly as an argument still uses the default parameter value. Let's look at an example to understand this:
function greet(name = 'Anonymous') {
console.log('Hello, ' + name + '!');
}
greet(undefined); // Output: Hello, Anonymous!
In this case, even though we pass undefined
as the argument to the greet
function, it still uses the default parameter value 'Anonymous'
. This can be useful in situations where you want to explicitly define some arguments and allow others to fall back to their default values.
Conclusion
Default parameters in ES6 allow you to provide fallback values for function arguments. They ensure that your functions behave as expected even when certain arguments are not passed. With the ability to define default values directly in the function's declaration, you can easily specify default parameters that make your code more robust and maintainable.
If you want to learn more about default parameters and other ES6 features, make sure to check out the MDN web docs on default parameters and the W3Schools guide to ES6.