JavaScript:创建返回函数的函数,在该函数中返回的函数调用已传递的函数

时间:2019-07-12 21:45:10

标签: javascript function callback iterator higher-order-functions

我试图创建一个函数“三次”,该函数返回另一个函数。

我在下面有以下代码:

const thrice = (inputFunc) => {
  return inputFunc()
}

let eight;

eight = thrice(() => {
  return 8;
});

const value = eight();
value

我的期望值是:8.根据我的测试规格,该值应该等于8。

但是当我运行代码时,它返回:TypeError: eight is not a function

我在做什么错?我的直觉是我应该在三次函数中执行return inputFunc。但是我从概念上不明白为什么。

1 个答案:

答案 0 :(得分:0)

注意

thrice(() => {
  return 8;
});

不是函数,而是函数调用,因此eight等于8。 所以要解决这个问题:

eight = ()=> thrice(() => {
  return 8;
});
// or

eight =function(){ thrice(() => {
  return 8;
});};