从 Javascript 中的函数中获取价值

Getting Value from Function in Javascript

我是 Javascript 的初学者并且 运行 遇到了一个小问题。这是一个家庭作业问题,但它只根据完成情况评分,所以我只是想为自己找出正确答案。

我应该定义一个函数 repeatUntil,它接受另外两个函数,比如 f(returns 一个数字)和 g(returns 一个布尔值)。 repeatUntil 的功能是重复函数 f 至少一次直到 g returns true.

这是我目前的情况:

function repeatUntil(f, cond) {
   var f1;

   do{
     f1 = f;
     return f1;
   }
   while(cond(f1()));
}

这里是 tester/how 我们称之为:

var print = console.log;
var r = repeatUntil(function(x) { return x + x }, function(x) { return x >= 20 })
print(r(2))
print("Expected: 32")

函数运行,但我现在的问题是存储来自 repeatUntil 函数的 x 的更新值。现在函数只运行一次,条件没有更新,因为我不能将 x 的更新值传递给函数 g。我尝试将 f() 的结果放入一个变量中,但它只会 return 一个函数而不是一个数字。

任何 help/advice 将不胜感激。谢谢!

将现有的评论合并为一个答案。

  • 由于您需要调用 r(),您的函数需要 return 另一个函数。
  • do 循环将 运行 恰好一次,因为你 return 在循环体中

代码

function repeatUntil(f, cond) {
   return function() {
       while(cond(f()));
   }
}