Destructuring Tweets – Episode 6 – Default Parameter Values

Welcome to the series about destructuring those over-shared JavaScript quizzes on Social Media. Have fun digging into default values!

The Snippet

let year = 2020;
const evolution = (defaultYear = 2000) => {
  year = defaultYear;
}
evolution(null);
console.log(year);

At first, a variable year gets declared and initialized with the number 2020. Just to be manipulated in an arrow-function evolution in the next line. It accepts a parameter with a default value of 2000. This parameter's value gets assigned to the variable year. Now comes the exciting part. The function gets called null as the argument, followed by logging the manipulated variable to the console.

The Output

You have a relatively high chance of 50 % to guess the output right here. As it's either 2000 or null, right? The initial value of 2020 gets surely overwritten. However, null wins. And there is a good reason for that.

The Analysis

The reason is that null is indeed a value. It means the intentional absence of any other matter. It stands for “nothing” or “void”. That's different with undefined. Undefined is a primitive type (and a value), meaning a variable does not have a value assigned. So, if we leave out an argument in a function call, we do not pass “no value” but rather undefined. And that logic is also applied when it comes to default parameters. Only if “no value”, so undefined, is passed, it gets overwritten by the defined default value.

Further Reading

Default Parametersnullundefined