I’d like to know what is up with functions like these.

All this function does basically is it returns a number incrementing it by 1.

```
const increment = function() {
"use strict";
return function increment(number, value=1) {
return number + value;
};
}();
console.log(increment(5, 2)); // returns 7
console.log(increment(5)); // returns NaN
```

But so does this function

```
const increment=function(num){
return num+1;
};
```

I guess my question is why these nested redundant functions?

And when we call the increment function in the first case, are we calling the const increment or function increment? How’s it that we can name a function the same as a const? Isn’t it cofusing?

**Your browser information:**

User Agent is: `Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/67.0.3396.99 Safari/537.36`

.

**Link to the challenge:**

https://learn.freecodecamp.org/javascript-algorithms-and-data-structures/es6/set-default-parameters-for-your-functions