Note of Learn ES6

Default Values for Function Parameters in ES6

ding fan
1 min readMay 26, 2017
function greet (greeting, name) {  console.log(greeting + “, ” + name);}greet();

Output is undefined, undefined

Now set default arguments of name with “John”

function greet (greeting, name = “John”) {  console.log(greeting + “, ” + name);}greet();

Output is undefined, John

If we pass in “Hello”

function greet (greeting, name = “John”) {  console.log(greeting + “, ” + name);}greet(“Hello”);

Output is Hello, John

If we pass in “Hello” and “Bill” , the default value we’ve set to name would be overridden

function greet (greeting, name = “John”) {  console.log(greeting + “, ” + name);}greet(“Hello”, “Bill”);

Output is Hello, Bill

function receive (complete) {
complete();
}
receive();

This will cause TypeError: undefined is not a function

function receive (complete) {
complete();
}
receive(function () {
console.log("complete");
});

Output is complete

We could assign this function as a default function

function receive (complete = function () {
console.log("complete");
}) {
complete();
}
receive();

Output is complete

Remember arrow function?

function receive (complete = () => console.log("complete")) {
complete();
}
receive();

Output is complete

These default value remind me about python.

If you are crazy about arrow function, you may do this(but don’t, it’s not a good implementation)

let receive = (complete = () => console.log("complete")) => complete();receive();

Output is complete

This kind of code is disaster.

--

--