But when doing that, I accidentally wrote some nonsense like:
function add(x) {
// Only change code below this line
return x => y => z => x + y + z;
// Only change code above this line
}
console.log(add(10)(20)(30));//[Function (anonymous)]
Can’t figure out what this code does and why)
Also in the description the bind was used. I can’t remember if it was present in the earlier curriculum.
I am running into snippets with bind when doing research on regular basis, but never used it yet. Is it time to do thorough research about this one? Just finished Functional Programming section.
It exists primarily to let you set the scope of methods taken from a given object; that’s a bit difficult to explain without exampls just using it, but it wraps the original function you’re binding in a new function with this set to whatever you want it to be (first argument passed to bind).
What it also lets you do is pass in arguments that get prefilled (second, third etc arguments passed to bind), allowing for partial application. Which is where it relates to functional programming – in this context, the primary purpose of bind isn’t important (I’m just passing null in as the first argument):
const add = (x, y) => x + y;
// Following creates a function that is like
//
// const add2 = (x) => {
// return add(2, x);
// };
const add2 = add.bind(null, 2);
console.log(add(1, 2)) // 3
console.log(add2(1)) // 3