Java Reference
In-Depth Information
name = name || "World";
This is using the logical OR operator to check if the
name
parameter has a truthy value.
If it does, then
name
will stay the same. If
name
is falsy (such as
undefined
), it will
take the value of "
World
". Be careful using this method, however; if the
name
argument
is a falsy value it will be set to the default value of "
World
", and in some cases you might
want it to be the falsy value instead (
0
, for example).
Default parameters should always come after non-default parameters, otherwise default
values will always have to be entered anyway. Consider the following function for calcu-
lating a discounted price in a store:
function discount(price, amount) {
if(amount === undefined) amount = 10;
return price*(100-amount)/100;
}
It takes two arguments: the price of an item and the percentage discount. The store's
most common discount is 10%, so this is provided as a default value. This means that the
amount
argument can be omitted in most cases and a 10% discount will still be applied:
discount(20) // standard discount of 10%
<< 18
If a different discount is applied, the
amount
argument can be provided:
discount(15, 20) // discount of 20%
<< 12
This will fail to work, however, if the parameters are reversed:
function discount(amount, price) {
if (amount===undefined) amount = 10;
return price*(100-amount)/100;
}
Now if we try to use the function with just one argument, the function won't work, because
price
has not been set:
