Creating a nested function, and then attempting to fill in all function parameters results in an error:
function A(x) {
function B(y) {
function C(z) {
console.log(x + y + z);
}
}
}
A(2)(2)(2);
>> Uncaught TypeError: A(...) is not a function
However on the MDN documentation, a nested function such as the following works correctly:
function outside(x) {
function inside(y) {
return x + y;
}
return inside;
}
fn_inside = outside(3); // Think of it like: give me a function that adds 3 to whatever you give
// it
result = fn_inside(5); // returns 8
result1 = outside(3)(5); // returns 8
Advertisement
Answer
You’re not returning your function, what you probably want to do is:
function A(x) {
function B(y) {
function C(z) {
console.log(x + y + z);
}
return C;
}
return B;
}
Or, using function expressions:
function A(x) {
return function B(y) {
return function C(z) {
console.log(x + y + z);
};
};
}