gpt4 book ai didi

javascript - 回调,错误 : is not a function

转载 作者:行者123 更新时间:2023-11-30 16:03:31 27 4
gpt4 key购买 nike

所以我回到了一些基础知识,发现我在处理最简单的事情时遇到了麻烦。我有一个向我抛出错误的回调,我怀疑这是一个提升的东西,但一直在谷歌搜索,似乎找不到我要找的东西。

function add (a,b){return a+b;}
function multiply (a,b){return a*b;}


function applyFn(callback) {
return callback;
};

var f = applyFn(add);

console.log(f); //logs => function add(a,b){return a+b;}

f(3)(4); // returns => Uncaught TypeError: f(...) is not a function(…)

我知道 var f 被提升到顶部并带有未定义的值,而命名函数则原封不动地提升。当我控制台日志 console.log(typeof f) 它返回 function - 所以我对发生的事情有点困惑......我在正确的轨道上,还是完全不同的问题?

编辑:为了更清晰起见,applyFn 应该能够使用 addmultiply 函数,因此它看起来更像这样:

function add (a,b){return a+b;}
function multiply (a,b){return a*b;}

//I needed to write this function, but nothing else
function applyFn(callback) {
return function(){};
};

var f = applyFn(add);
var x = applyFn(multiply)

f(3)(4);
x(6)(8);

最佳答案

要回答您的问题,您需要查看 applyFn 返回的内容。它接受一个函数,并简单地返回该函数。如果您分配它返回的内容,您分配给的变量现在只是对您最初传入的函数的引用。在本例中,这是函数 add,它只是将两个数字相加。当您调用 f 时,您实际上是在调用 add,这意味着 1. 它需要两个参数,并且 2. 它将返回两个参数相加的结果,而不是另一个你可以调用的函数。如果您的目标是柯里化(Currying),那么您的函数需要返回另一个函数,以便可以调用它:

function adder(num1) {
return function (num2) {
return num1 + num2;
};
}

adder(2)(3);

以下是我认为您正在寻找的内容:

function applyFn(func) {
return function (x) {
return function (y) {
return func(x, y);
};
};
}

applyFn 的这个实现应该用 addmultiply 做你期望的事情

关于javascript - 回调,错误 : is not a function,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37356147/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com