创建嵌套函数,然后尝试填写所有函数参数会导致错误:
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
答案 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