Skip to content
Advertisement

Javascript nested function not defined

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);
    };
  };
}
User contributions licensed under: CC BY-SA
8 People found this is helpful
Advertisement