未定义JavaScript嵌套函数

时间:2020-07-15 17:57:46

标签: javascript

创建嵌套函数,然后尝试填写所有函数参数会导致错误:

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

但是,在MDN文档中,嵌套函数(例如以下代码)可以正常工作:

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

3 个答案:

答案 0 :(得分:4)

您不返回函数,您可能想做的是:

function A(x) {
  function B(y) {
    function C(z) {
      console.log(x + y + z);
    }
    return C;
  }
  return B;
}

或者,使用函数表达式:

function A(x) {
  return function B(y) {
    return function C(z) {
      console.log(x + y + z);
    };
  };
}

答案 1 :(得分:2)

函数A不返回任何内容。这等效于:

const result = A(2); // result is undefined
result(2); // trying to invoke undefined as a function

答案 2 :(得分:2)

在第一个示例中,一切都很好,只不过您忘记返回内部函数。

相反,您应该这样做:

function A(x) {
  return function B(y) {
    return function C(z) {
      console.log(x + y + z);
    }
  }
}

A(2)(2)(2); //6